You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor) at CL 7473521
#rb none #fyi Max.Chen, Tim.Gautier [CL 7614721 by Chris Gagnon in Dev-Editor branch]
This commit is contained in:
@@ -18,6 +18,7 @@ TAutoConsoleVariable<int32> CVarAimOffsetLookAtDebug(TEXT("a.AnimNode.AimOffsetL
|
||||
|
||||
void FAnimNode_AimOffsetLookAt::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_BlendSpacePlayer::Initialize_AnyThread(Context);
|
||||
BasePose.Initialize(Context);
|
||||
}
|
||||
@@ -66,6 +67,7 @@ void FAnimNode_AimOffsetLookAt::UpdateAssetPlayer(const FAnimationUpdateContext&
|
||||
|
||||
void FAnimNode_AimOffsetLookAt::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
FAnimNode_BlendSpacePlayer::CacheBones_AnyThread(Context);
|
||||
BasePose.CacheBones(Context);
|
||||
|
||||
@@ -168,6 +170,7 @@ void FAnimNode_AimOffsetLookAt::UpdateFromLookAtTarget(FPoseContext& LocalPoseCo
|
||||
|
||||
void FAnimNode_AimOffsetLookAt::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
|
||||
DebugLine += FString::Printf(TEXT("(Play Time: %.3f)"), InternalTimeAccumulator);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
void FAnimNode_ApplyAdditive::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_Base::Initialize_AnyThread(Context);
|
||||
|
||||
Base.Initialize(Context);
|
||||
@@ -18,14 +19,16 @@ void FAnimNode_ApplyAdditive::Initialize_AnyThread(const FAnimationInitializeCon
|
||||
AlphaScaleBiasClamp.Reinitialize();
|
||||
}
|
||||
|
||||
void FAnimNode_ApplyAdditive::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
void FAnimNode_ApplyAdditive::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
Base.CacheBones(Context);
|
||||
Additive.CacheBones(Context);
|
||||
}
|
||||
|
||||
void FAnimNode_ApplyAdditive::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
Base.Update(Context);
|
||||
|
||||
ActualAlpha = 0.f;
|
||||
@@ -60,6 +63,7 @@ void FAnimNode_ApplyAdditive::Update_AnyThread(const FAnimationUpdateContext& Co
|
||||
|
||||
void FAnimNode_ApplyAdditive::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
//@TODO: Could evaluate Base into Output and save a copy
|
||||
if (FAnimWeight::IsRelevant(ActualAlpha))
|
||||
{
|
||||
@@ -90,6 +94,7 @@ FAnimNode_ApplyAdditive::FAnimNode_ApplyAdditive()
|
||||
|
||||
void FAnimNode_ApplyAdditive::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
DebugLine += FString::Printf(TEXT("(Alpha: %.1f%%)"), ActualAlpha*100.f);
|
||||
|
||||
|
||||
+5
@@ -9,6 +9,7 @@
|
||||
|
||||
void FAnimNode_BlendBoneByChannel::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_Base::Initialize_AnyThread(Context);
|
||||
|
||||
A.Initialize(Context);
|
||||
@@ -17,6 +18,7 @@ void FAnimNode_BlendBoneByChannel::Initialize_AnyThread(const FAnimationInitiali
|
||||
|
||||
void FAnimNode_BlendBoneByChannel::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
A.CacheBones(Context);
|
||||
B.CacheBones(Context);
|
||||
|
||||
@@ -38,6 +40,7 @@ void FAnimNode_BlendBoneByChannel::CacheBones_AnyThread(const FAnimationCacheBon
|
||||
|
||||
void FAnimNode_BlendBoneByChannel::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
QUICK_SCOPE_CYCLE_COUNTER(STAT_FAnimNode_BlendBoneByChannel_Update);
|
||||
GetEvaluateGraphExposedInputs().Execute(Context);
|
||||
|
||||
@@ -53,6 +56,7 @@ void FAnimNode_BlendBoneByChannel::Update_AnyThread(const FAnimationUpdateContex
|
||||
|
||||
void FAnimNode_BlendBoneByChannel::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
A.Evaluate(Output);
|
||||
|
||||
if (bBIsRelevant)
|
||||
@@ -171,6 +175,7 @@ void FAnimNode_BlendBoneByChannel::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_BlendBoneByChannel::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
DebugLine += FString::Printf(TEXT("(Alpha: %.1f%%)"), InternalBlendAlpha * 100);
|
||||
DebugData.AddDebugItem(DebugLine);
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
void FAnimNode_BlendListBase::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_Base::Initialize_AnyThread(Context);
|
||||
|
||||
const int NumPoses = BlendPose.Num();
|
||||
@@ -63,8 +64,9 @@ void FAnimNode_BlendListBase::Initialize_AnyThread(const FAnimationInitializeCon
|
||||
}
|
||||
}
|
||||
|
||||
void FAnimNode_BlendListBase::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
void FAnimNode_BlendListBase::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
for(int32 ChildIndex=0; ChildIndex<BlendPose.Num(); ChildIndex++)
|
||||
{
|
||||
BlendPose[ChildIndex].CacheBones(Context);
|
||||
@@ -73,6 +75,7 @@ void FAnimNode_BlendListBase::CacheBones_AnyThread(const FAnimationCacheBonesCon
|
||||
|
||||
void FAnimNode_BlendListBase::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
GetEvaluateGraphExposedInputs().Execute(Context);
|
||||
|
||||
const int NumPoses = BlendPose.Num();
|
||||
@@ -203,6 +206,7 @@ void FAnimNode_BlendListBase::Update_AnyThread(const FAnimationUpdateContext& Co
|
||||
|
||||
void FAnimNode_BlendListBase::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
ANIM_MT_SCOPE_CYCLE_COUNTER(BlendPosesInGraph, !IsInGameThread());
|
||||
|
||||
const int32 NumPoses = PosesToEvaluate.Num();
|
||||
@@ -247,6 +251,7 @@ void FAnimNode_BlendListBase::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_BlendListBase::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
const int NumPoses = BlendPose.Num();
|
||||
const int32 ChildIndex = GetActiveChildIndex();
|
||||
|
||||
|
||||
+1
@@ -24,6 +24,7 @@ void FAnimNode_BlendSpaceEvaluator::UpdateAssetPlayer(const FAnimationUpdateCont
|
||||
|
||||
void FAnimNode_BlendSpaceEvaluator::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
|
||||
DebugLine += FString::Printf(TEXT("('%s' Play Time: %.3f)"), *BlendSpace->GetName(), InternalTimeAccumulator);
|
||||
|
||||
+6
-1
@@ -55,6 +55,7 @@ float FAnimNode_BlendSpacePlayer::GetCurrentAssetLength()
|
||||
|
||||
void FAnimNode_BlendSpacePlayer::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_AssetPlayerBase::Initialize_AnyThread(Context);
|
||||
|
||||
GetEvaluateGraphExposedInputs().Execute(Context);
|
||||
@@ -64,8 +65,9 @@ void FAnimNode_BlendSpacePlayer::Initialize_AnyThread(const FAnimationInitialize
|
||||
PreviousBlendSpace = BlendSpace;
|
||||
}
|
||||
|
||||
void FAnimNode_BlendSpacePlayer::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
void FAnimNode_BlendSpacePlayer::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
}
|
||||
|
||||
void FAnimNode_BlendSpacePlayer::UpdateAssetPlayer(const FAnimationUpdateContext& Context)
|
||||
@@ -77,6 +79,7 @@ void FAnimNode_BlendSpacePlayer::UpdateAssetPlayer(const FAnimationUpdateContext
|
||||
|
||||
void FAnimNode_BlendSpacePlayer::UpdateInternal(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(UpdateInternal)
|
||||
if ((BlendSpace != NULL) && (Context.AnimInstanceProxy->IsSkeletonCompatible(BlendSpace->GetSkeleton())))
|
||||
{
|
||||
// Create a tick record and fill it out
|
||||
@@ -104,6 +107,7 @@ void FAnimNode_BlendSpacePlayer::UpdateInternal(const FAnimationUpdateContext& C
|
||||
|
||||
void FAnimNode_BlendSpacePlayer::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
if ((BlendSpace != NULL) && (Output.AnimInstanceProxy->IsSkeletonCompatible(BlendSpace->GetSkeleton())))
|
||||
{
|
||||
BlendSpace->GetAnimationPose(BlendSampleDataCache, Output.Pose, Output.Curve);
|
||||
@@ -124,6 +128,7 @@ void FAnimNode_BlendSpacePlayer::OverrideAsset(UAnimationAsset* NewAsset)
|
||||
|
||||
void FAnimNode_BlendSpacePlayer::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
if (BlendSpace)
|
||||
{
|
||||
|
||||
@@ -15,6 +15,7 @@ FAnimNode_CopyPoseFromMesh::FAnimNode_CopyPoseFromMesh()
|
||||
|
||||
void FAnimNode_CopyPoseFromMesh::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_Base::Initialize_AnyThread(Context);
|
||||
|
||||
// Initial update of the node, so we dont have a frame-delay on setup
|
||||
@@ -26,6 +27,7 @@ void FAnimNode_CopyPoseFromMesh::Initialize_AnyThread(const FAnimationInitialize
|
||||
|
||||
void FAnimNode_CopyPoseFromMesh::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
|
||||
}
|
||||
|
||||
@@ -147,6 +149,7 @@ void FAnimNode_CopyPoseFromMesh::PreUpdate(const UAnimInstance* InAnimInstance)
|
||||
|
||||
void FAnimNode_CopyPoseFromMesh::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
// This introduces a frame of latency in setting the pin-driven source component,
|
||||
// but we cannot do the work to extract transforms on a worker thread as it is not thread safe.
|
||||
GetEvaluateGraphExposedInputs().Execute(Context);
|
||||
@@ -154,6 +157,7 @@ void FAnimNode_CopyPoseFromMesh::Update_AnyThread(const FAnimationUpdateContext&
|
||||
|
||||
void FAnimNode_CopyPoseFromMesh::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
FCompactPose& OutPose = Output.Pose;
|
||||
OutPose.ResetToRefPose();
|
||||
USkeletalMesh* CurrentMesh = CurrentlyUsedMesh.IsValid() ? CurrentlyUsedMesh.Get() : nullptr;
|
||||
@@ -202,6 +206,7 @@ void FAnimNode_CopyPoseFromMesh::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_CopyPoseFromMesh::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
|
||||
DebugLine += FString::Printf(TEXT("('%s')"), *GetNameSafe(CurrentlyUsedSourceMeshComponent.IsValid() ? CurrentlyUsedSourceMeshComponent.Get()->SkeletalMesh : nullptr));
|
||||
|
||||
@@ -72,6 +72,7 @@ public:
|
||||
|
||||
void FAnimNode_CurveSource::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
SourcePose.Evaluate(Output);
|
||||
|
||||
if (CurveSource.GetInterface() != nullptr)
|
||||
@@ -97,6 +98,7 @@ void FAnimNode_CurveSource::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_CurveSource::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
// Evaluate any BP logic plugged into this node
|
||||
GetEvaluateGraphExposedInputs().Execute(Context);
|
||||
SourcePose.Update(Context);
|
||||
@@ -104,18 +106,21 @@ void FAnimNode_CurveSource::Update_AnyThread(const FAnimationUpdateContext& Cont
|
||||
|
||||
void FAnimNode_CurveSource::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_Base::Initialize_AnyThread(Context);
|
||||
SourcePose.Initialize(Context);
|
||||
}
|
||||
|
||||
void FAnimNode_CurveSource::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
FAnimNode_Base::CacheBones_AnyThread(Context);
|
||||
SourcePose.CacheBones(Context);
|
||||
}
|
||||
|
||||
void FAnimNode_CurveSource::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FAnimNode_Base::GatherDebugData(DebugData);
|
||||
SourcePose.GatherDebugData(DebugData.BranchFlow(1.f));
|
||||
}
|
||||
+6
-1
@@ -10,6 +10,7 @@
|
||||
|
||||
void FAnimNode_LayeredBoneBlend::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_Base::Initialize_AnyThread(Context);
|
||||
|
||||
const int NumPoses = BlendPoses.Num();
|
||||
@@ -113,8 +114,9 @@ void FAnimNode_LayeredBoneBlend::ReinitializeBoneBlendWeights(const FBoneContain
|
||||
}
|
||||
}
|
||||
|
||||
void FAnimNode_LayeredBoneBlend::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
void FAnimNode_LayeredBoneBlend::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
BasePose.CacheBones(Context);
|
||||
int32 NumPoses = BlendPoses.Num();
|
||||
for(int32 ChildIndex=0; ChildIndex<NumPoses; ChildIndex++)
|
||||
@@ -130,6 +132,7 @@ void FAnimNode_LayeredBoneBlend::CacheBones_AnyThread(const FAnimationCacheBones
|
||||
|
||||
void FAnimNode_LayeredBoneBlend::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
bHasRelevantPoses = false;
|
||||
int32 RootMotionBlendPose = -1;
|
||||
float RootMotionWeight = 0.f;
|
||||
@@ -202,6 +205,7 @@ void FAnimNode_LayeredBoneBlend::Update_AnyThread(const FAnimationUpdateContext&
|
||||
|
||||
void FAnimNode_LayeredBoneBlend::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
ANIM_MT_SCOPE_CYCLE_COUNTER(BlendPosesInGraph, !IsInGameThread());
|
||||
|
||||
const int NumPoses = BlendPoses.Num();
|
||||
@@ -281,6 +285,7 @@ void FAnimNode_LayeredBoneBlend::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_LayeredBoneBlend::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
const int NumPoses = BlendPoses.Num();
|
||||
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
|
||||
+5
@@ -13,6 +13,7 @@ FAnimNode_MakeDynamicAdditive::FAnimNode_MakeDynamicAdditive()
|
||||
|
||||
void FAnimNode_MakeDynamicAdditive::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_Base::Initialize_AnyThread(Context);
|
||||
|
||||
Base.Initialize(Context);
|
||||
@@ -21,18 +22,21 @@ void FAnimNode_MakeDynamicAdditive::Initialize_AnyThread(const FAnimationInitial
|
||||
|
||||
void FAnimNode_MakeDynamicAdditive::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
Base.CacheBones(Context);
|
||||
Additive.CacheBones(Context);
|
||||
}
|
||||
|
||||
void FAnimNode_MakeDynamicAdditive::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
Base.Update(Context.FractionalWeight(1.f));
|
||||
Additive.Update(Context.FractionalWeight(1.f));
|
||||
}
|
||||
|
||||
void FAnimNode_MakeDynamicAdditive::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
FPoseContext BaseEvalContext(Output);
|
||||
|
||||
Base.Evaluate(BaseEvalContext);
|
||||
@@ -50,6 +54,7 @@ void FAnimNode_MakeDynamicAdditive::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_MakeDynamicAdditive::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
DebugLine += FString::Printf(TEXT("(Mesh Space Additive: %s)"), bMeshSpaceAdditive ? TEXT("true") : TEXT("false"));
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ FAnimNode_ModifyCurve::FAnimNode_ModifyCurve()
|
||||
|
||||
void FAnimNode_ModifyCurve::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
Super::Initialize_AnyThread(Context);
|
||||
SourcePose.Initialize(Context);
|
||||
|
||||
@@ -25,12 +26,14 @@ void FAnimNode_ModifyCurve::Initialize_AnyThread(const FAnimationInitializeConte
|
||||
|
||||
void FAnimNode_ModifyCurve::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
Super::CacheBones_AnyThread(Context);
|
||||
SourcePose.CacheBones(Context);
|
||||
}
|
||||
|
||||
void FAnimNode_ModifyCurve::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
FPoseContext SourceData(Output);
|
||||
SourcePose.Evaluate(SourceData);
|
||||
|
||||
@@ -87,6 +90,7 @@ void FAnimNode_ModifyCurve::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_ModifyCurve::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
// Run update on input pose nodes
|
||||
SourcePose.Update(Context);
|
||||
|
||||
|
||||
+29
-9
@@ -16,6 +16,7 @@ struct FMultiBlendData : public TThreadSingleton<FMultiBlendData>
|
||||
|
||||
void FAnimNode_MultiWayBlend::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_Base::Initialize_AnyThread(Context);
|
||||
|
||||
// this should be consistent all the time by editor node
|
||||
@@ -32,8 +33,9 @@ void FAnimNode_MultiWayBlend::Initialize_AnyThread(const FAnimationInitializeCon
|
||||
}
|
||||
}
|
||||
|
||||
void FAnimNode_MultiWayBlend::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
void FAnimNode_MultiWayBlend::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
for (FPoseLink& Pose : Poses)
|
||||
{
|
||||
Pose.CacheBones(Context);
|
||||
@@ -85,6 +87,7 @@ void FAnimNode_MultiWayBlend::UpdateCachedAlphas()
|
||||
|
||||
void FAnimNode_MultiWayBlend::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
QUICK_SCOPE_CYCLE_COUNTER(STAT_FAnimationNode_MultiWayBlend_Update);
|
||||
GetEvaluateGraphExposedInputs().Execute(Context);
|
||||
UpdateCachedAlphas();
|
||||
@@ -102,15 +105,17 @@ void FAnimNode_MultiWayBlend::Update_AnyThread(const FAnimationUpdateContext& Co
|
||||
|
||||
void FAnimNode_MultiWayBlend::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
|
||||
// this function may be reentrant when multiple MultiWayBlend nodes are chained together
|
||||
// these scratch arrays are treated as stacks below
|
||||
FMultiBlendData& BlendData = FMultiBlendData::Get();
|
||||
TArray<FCompactPose, TInlineAllocator<8>>& SourcePoses = BlendData.SourcePoses;
|
||||
TArray<float, TInlineAllocator<8>>& SourceWeights = BlendData.SourceWeights;
|
||||
TArray<FBlendedCurve, TInlineAllocator<8>>& SourceCurves = BlendData.SourceCurves;
|
||||
TArray<float, TInlineAllocator<8>>& SourceWeights = BlendData.SourceWeights;
|
||||
|
||||
SourcePoses.Reset();
|
||||
SourceWeights.Reset();
|
||||
SourceCurves.Reset();
|
||||
|
||||
const int32 SourcePosesInitialNum = SourcePoses.Num();
|
||||
int32 SourcePosesAdded = 0;
|
||||
if (ensure(Poses.Num() == CachedAlphas.Num()))
|
||||
{
|
||||
for (int32 PoseIndex = 0; PoseIndex < Poses.Num(); ++PoseIndex)
|
||||
@@ -118,10 +123,11 @@ void FAnimNode_MultiWayBlend::Evaluate_AnyThread(FPoseContext& Output)
|
||||
const float CurrentAlpha = CachedAlphas[PoseIndex];
|
||||
if (CurrentAlpha > ZERO_ANIMWEIGHT_THRESH)
|
||||
{
|
||||
// evaluate input pose, potentially reentering this function and pushing/popping more poses
|
||||
FPoseContext PoseContext(Output);
|
||||
// total alpha shouldn't be zero
|
||||
Poses[PoseIndex].Evaluate(PoseContext);
|
||||
|
||||
// push source pose data
|
||||
FCompactPose& SourcePose = SourcePoses.AddDefaulted_GetRef();
|
||||
SourcePose.MoveBonesFrom(PoseContext.Pose);
|
||||
|
||||
@@ -129,15 +135,28 @@ void FAnimNode_MultiWayBlend::Evaluate_AnyThread(FPoseContext& Output)
|
||||
SourceCurve.MoveFrom(PoseContext.Curve);
|
||||
|
||||
SourceWeights.Add(CurrentAlpha);
|
||||
|
||||
++SourcePosesAdded;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (SourcePoses.Num() > 0)
|
||||
if (SourcePosesAdded > 0)
|
||||
{
|
||||
FAnimationRuntime::BlendPosesTogether(SourcePoses, SourceCurves, SourceWeights, Output.Pose, Output.Curve);
|
||||
// obtain views onto the ends of our stacks
|
||||
TArrayView<FCompactPose> SourcePosesView = MakeArrayView(&SourcePoses[SourcePosesInitialNum], SourcePosesAdded);
|
||||
TArrayView<FBlendedCurve> SourceCurvesView = MakeArrayView(&SourceCurves[SourcePosesInitialNum], SourcePosesAdded);
|
||||
TArrayView<float> SourceWeightsView = MakeArrayView(&SourceWeights[SourcePosesInitialNum], SourcePosesAdded);
|
||||
|
||||
FAnimationRuntime::BlendPosesTogether(SourcePosesView, SourceCurvesView, SourceWeightsView, Output.Pose, Output.Curve);
|
||||
|
||||
// normalize rotation - some cases, where additive is applied less than 1, it will use non normalized rotation
|
||||
Output.Pose.NormalizeRotations();
|
||||
|
||||
// pop the poses we added
|
||||
SourcePoses.SetNum(SourcePosesInitialNum, false);
|
||||
SourceCurves.SetNum(SourcePosesInitialNum, false);
|
||||
SourceWeights.SetNum(SourcePosesInitialNum, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -154,6 +173,7 @@ void FAnimNode_MultiWayBlend::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_MultiWayBlend::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
DebugData.AddDebugItem(DebugLine);
|
||||
|
||||
|
||||
@@ -15,13 +15,15 @@ FAnimNode_PoseBlendNode::FAnimNode_PoseBlendNode()
|
||||
|
||||
void FAnimNode_PoseBlendNode::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_PoseHandler::Initialize_AnyThread(Context);
|
||||
|
||||
SourcePose.Initialize(Context);
|
||||
}
|
||||
|
||||
void FAnimNode_PoseBlendNode::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
void FAnimNode_PoseBlendNode::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
FAnimNode_PoseHandler::CacheBones_AnyThread(Context);
|
||||
SourcePose.CacheBones(Context);
|
||||
}
|
||||
@@ -34,6 +36,7 @@ void FAnimNode_PoseBlendNode::UpdateAssetPlayer(const FAnimationUpdateContext& C
|
||||
|
||||
void FAnimNode_PoseBlendNode::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
ANIM_MT_SCOPE_CYCLE_COUNTER(PoseBlendNodeEvaluate, !IsInGameThread());
|
||||
|
||||
FPoseContext SourceData(Output);
|
||||
@@ -83,6 +86,7 @@ void FAnimNode_PoseBlendNode::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_PoseBlendNode::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FAnimNode_PoseHandler::GatherDebugData(DebugData);
|
||||
SourcePose.GatherDebugData(DebugData.BranchFlow(1.f));
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
void FAnimNode_PoseByName::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_PoseHandler::Initialize_AnyThread(Context);
|
||||
}
|
||||
|
||||
@@ -38,6 +39,7 @@ void FAnimNode_PoseByName::UpdateAssetPlayer(const FAnimationUpdateContext& Cont
|
||||
|
||||
void FAnimNode_PoseByName::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
// make sure we have curve to eval
|
||||
if ((CurrentPoseAsset.IsValid()) && (PoseExtractContext.PoseCurves.Num() > 0) && (Output.AnimInstanceProxy->IsSkeletonCompatible(CurrentPoseAsset->GetSkeleton())))
|
||||
{
|
||||
@@ -54,6 +56,7 @@ void FAnimNode_PoseByName::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_PoseByName::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
|
||||
DebugLine += FString::Printf(TEXT("('%s' Pose: %s)"), CurrentPoseAsset.IsValid()? *CurrentPoseAsset.Get()->GetName() : TEXT("None"), *PoseName.ToString());
|
||||
|
||||
@@ -23,6 +23,7 @@ FAnimNode_PoseDriver::FAnimNode_PoseDriver()
|
||||
|
||||
void FAnimNode_PoseDriver::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_PoseHandler::Initialize_AnyThread(Context);
|
||||
|
||||
SourcePose.Initialize(Context);
|
||||
@@ -71,6 +72,7 @@ void FAnimNode_PoseDriver::RebuildPoseList(const FBoneContainer& InBoneContainer
|
||||
|
||||
void FAnimNode_PoseDriver::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
FAnimNode_PoseHandler::CacheBones_AnyThread(Context);
|
||||
// Init pose input
|
||||
SourcePose.CacheBones(Context);
|
||||
@@ -140,6 +142,7 @@ void FAnimNode_PoseDriver::UpdateAssetPlayer(const FAnimationUpdateContext& Cont
|
||||
|
||||
void FAnimNode_PoseDriver::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FAnimNode_PoseHandler::GatherDebugData(DebugData);
|
||||
SourcePose.GatherDebugData(DebugData.BranchFlow(1.f));
|
||||
}
|
||||
@@ -215,6 +218,7 @@ void FAnimNode_PoseDriver::GetRBFTargets(TArray<FRBFTarget>& OutTargets) const
|
||||
|
||||
void FAnimNode_PoseDriver::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
QUICK_SCOPE_CYCLE_COUNTER(STAT_PoseDriver_Eval);
|
||||
|
||||
// Udpate DrivenIDs if needed
|
||||
|
||||
@@ -8,13 +8,15 @@
|
||||
|
||||
void FAnimNode_PoseHandler::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_AssetPlayerBase::Initialize_AnyThread(Context);
|
||||
|
||||
UpdatePoseAssetProperty(Context.AnimInstanceProxy);
|
||||
}
|
||||
|
||||
void FAnimNode_PoseHandler::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
void FAnimNode_PoseHandler::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
FAnimNode_AssetPlayerBase::CacheBones_AnyThread(Context);
|
||||
|
||||
BoneBlendWeights.Reset();
|
||||
@@ -87,6 +89,7 @@ void FAnimNode_PoseHandler::OverrideAsset(UAnimationAsset* NewAsset)
|
||||
|
||||
void FAnimNode_PoseHandler::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
|
||||
DebugLine += FString::Printf(TEXT("('%s')"), *GetNameSafe(PoseAsset));
|
||||
|
||||
@@ -48,12 +48,14 @@ void FAnimNode_PoseSnapshot::PreUpdate(const UAnimInstance* InAnimInstance)
|
||||
|
||||
void FAnimNode_PoseSnapshot::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
// Evaluate any BP logic plugged into this node
|
||||
GetEvaluateGraphExposedInputs().Execute(Context);
|
||||
}
|
||||
|
||||
void FAnimNode_PoseSnapshot::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
FCompactPose& OutPose = Output.Pose;
|
||||
OutPose.ResetToRefPose();
|
||||
|
||||
@@ -117,6 +119,7 @@ void FAnimNode_PoseSnapshot::ApplyPose(const FPoseSnapshot& PoseSnapshot, FCompa
|
||||
|
||||
void FAnimNode_PoseSnapshot::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this) + " Snapshot Name:" + SnapshotName.ToString();
|
||||
DebugData.AddDebugItem(DebugLine, true);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ FAnimNode_RandomPlayer::FAnimNode_RandomPlayer()
|
||||
|
||||
void FAnimNode_RandomPlayer::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_Base::Initialize_AnyThread(Context);
|
||||
GetEvaluateGraphExposedInputs().Execute(Context);
|
||||
|
||||
@@ -76,6 +77,7 @@ void FAnimNode_RandomPlayer::Initialize_AnyThread(const FAnimationInitializeCont
|
||||
|
||||
void FAnimNode_RandomPlayer::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
GetEvaluateGraphExposedInputs().Execute(Context);
|
||||
|
||||
if(Entries.Num() == 0)
|
||||
@@ -168,6 +170,7 @@ void FAnimNode_RandomPlayer::Update_AnyThread(const FAnimationUpdateContext& Con
|
||||
|
||||
void FAnimNode_RandomPlayer::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
if(Entries.Num() > 0)
|
||||
{
|
||||
UAnimSequence* CurrentSequence = Entries[CurrentEntry].Sequence;
|
||||
@@ -227,6 +230,7 @@ void FAnimNode_RandomPlayer::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_RandomPlayer::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
|
||||
DebugData.AddDebugItem(DebugLine, true);
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
void FAnimNode_RefPose::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
// I don't have anything to evaluate. Should this be even here?
|
||||
// EvaluateGraphExposedInputs.Execute(Context);
|
||||
|
||||
@@ -25,6 +26,7 @@ void FAnimNode_RefPose::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_MeshSpaceRefPose::EvaluateComponentSpace_AnyThread(FComponentSpacePoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(EvaluateComponentSpace_AnyThread)
|
||||
Output.ResetToRefPose();
|
||||
}
|
||||
|
||||
@@ -44,6 +46,7 @@ const TCHAR* GetRefPostTypeText(ERefPoseType RefPose)
|
||||
|
||||
void FAnimNode_RefPose::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
DebugLine += FString::Printf(TEXT("(Ref Pose Type: %s)"), GetRefPostTypeText(RefPoseType));
|
||||
DebugData.AddDebugItem(DebugLine, true);
|
||||
|
||||
+6
-1
@@ -7,6 +7,7 @@
|
||||
|
||||
void FAnimNode_RotateRootBone::Initialize_AnyThread(const FAnimationInitializeContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Initialize_AnyThread)
|
||||
FAnimNode_Base::Initialize_AnyThread(Context);
|
||||
|
||||
BasePose.Initialize(Context);
|
||||
@@ -15,13 +16,15 @@ void FAnimNode_RotateRootBone::Initialize_AnyThread(const FAnimationInitializeCo
|
||||
YawScaleBiasClamp.Reinitialize();
|
||||
}
|
||||
|
||||
void FAnimNode_RotateRootBone::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
void FAnimNode_RotateRootBone::CacheBones_AnyThread(const FAnimationCacheBonesContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(CacheBones_AnyThread)
|
||||
BasePose.CacheBones(Context);
|
||||
}
|
||||
|
||||
void FAnimNode_RotateRootBone::Update_AnyThread(const FAnimationUpdateContext& Context)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Update_AnyThread)
|
||||
GetEvaluateGraphExposedInputs().Execute(Context);
|
||||
BasePose.Update(Context);
|
||||
|
||||
@@ -31,6 +34,7 @@ void FAnimNode_RotateRootBone::Update_AnyThread(const FAnimationUpdateContext& C
|
||||
|
||||
void FAnimNode_RotateRootBone::Evaluate_AnyThread(FPoseContext& Output)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(Evaluate_AnyThread)
|
||||
// Evaluate the input
|
||||
BasePose.Evaluate(Output);
|
||||
|
||||
@@ -57,6 +61,7 @@ void FAnimNode_RotateRootBone::Evaluate_AnyThread(FPoseContext& Output)
|
||||
|
||||
void FAnimNode_RotateRootBone::GatherDebugData(FNodeDebugData& DebugData)
|
||||
{
|
||||
DECLARE_SCOPE_HIERARCHICAL_COUNTER_ANIMNODE(GatherDebugData)
|
||||
FString DebugLine = DebugData.GetNodeName(this);
|
||||
|
||||
DebugLine += FString::Printf(TEXT("Pitch(%.2f) Yaw(%.2f)"), ActualPitch, ActualYaw);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user