void FFabrikEditMode::DoTranslation(FVector& InTranslation) { USkeletalMeshComponent* SkelComp = GetAnimPreviewScene().GetPreviewMeshComponent(); FVector Offset = ConvertCSVectorToBoneSpace(SkelComp, InTranslation, RuntimeNode->ForwardedPose, GraphNode->Node.EffectorTransformBone.BoneName, GraphNode->Node.EffectorTransformSpace); RuntimeNode->EffectorTransform.AddToTranslation(Offset); GraphNode->Node.EffectorTransform.SetTranslation(RuntimeNode->EffectorTransform.GetTranslation()); }
void UAnimGraphNode_TwoBoneIK::DoTranslation(const USkeletalMeshComponent* SkelComp, FVector& Drag, FAnimNode_Base* InOutAnimNode) { FAnimNode_TwoBoneIK* TwoBoneIK = static_cast<FAnimNode_TwoBoneIK*>(InOutAnimNode); if (BoneSelectMode == BSM_EndEffector) { FVector Offset = ConvertCSVectorToBoneSpace(SkelComp, Drag, TwoBoneIK->ForwardedPose, FindSelectedBone(), Node.EffectorLocationSpace); TwoBoneIK->EffectorLocation += Offset; Node.EffectorLocation = TwoBoneIK->EffectorLocation; } else if (BoneSelectMode == BSM_JointTarget) { FVector Offset = ConvertCSVectorToBoneSpace(SkelComp, Drag, TwoBoneIK->ForwardedPose, FindSelectedBone(), Node.JointTargetLocationSpace); TwoBoneIK->JointTargetLocation += Offset; Node.JointTargetLocation = TwoBoneIK->JointTargetLocation; } }
void UAnimGraphNode_ModifyBone::DoTranslation(const USkeletalMeshComponent* SkelComp, FVector& Drag, FAnimNode_Base* InOutAnimNode) { FAnimNode_ModifyBone* ModifyBone = static_cast<FAnimNode_ModifyBone*>(InOutAnimNode); if (ModifyBone->TranslationMode != EBoneModificationMode::BMM_Ignore) { FVector Offset = ConvertCSVectorToBoneSpace(SkelComp, Drag, ModifyBone->ForwardedPose, Node.BoneToModify.BoneName, Node.TranslationSpace); ModifyBone->Translation += Offset; Node.Translation = ModifyBone->Translation; } }
void UAnimGraphNode_Fabrik::DoTranslation(const USkeletalMeshComponent* SkelComp, FVector& Drag, FAnimNode_Base* InOutAnimNode) { FAnimNode_Fabrik* Fabrik = static_cast<FAnimNode_Fabrik*>(InOutAnimNode); if (Fabrik) { FVector Offset = ConvertCSVectorToBoneSpace(SkelComp, Drag, Fabrik->ForwardedPose, Node.EffectorTransformBone.BoneName, Node.EffectorTransformSpace); Fabrik->EffectorTransform.AddToTranslation(Offset); // copy same value to internal node for data consistency Node.EffectorTransform.SetTranslation(Fabrik->EffectorTransform.GetTranslation()); } }