Fix nested animation sampling bug

#1244
This commit is contained in:
Wojtek Figat
2023-07-14 13:10:20 +02:00
parent f5f948ea4c
commit 84c99ea1c3

View File

@@ -217,6 +217,7 @@ void AnimGraphExecutor::ProcessAnimation(AnimGraphImpulse* nodes, AnimGraphNode*
const float animPrevPos = GetAnimSamplePos(length, anim, prevPos, speed); const float animPrevPos = GetAnimSamplePos(length, anim, prevPos, speed);
// Evaluate nested animations // Evaluate nested animations
bool hasNested = false;
if (anim->NestedAnims.Count() != 0) if (anim->NestedAnims.Count() != 0)
{ {
for (auto& e : anim->NestedAnims) for (auto& e : anim->NestedAnims)
@@ -239,6 +240,7 @@ void AnimGraphExecutor::ProcessAnimation(AnimGraphImpulse* nodes, AnimGraphNode*
GetAnimSamplePos(nestedAnim.Loop, nestedAnimLength, nestedAnim.StartTime, nestedAnimPrevPos, nestedAnimPos, nestedAnimPos, nestedAnimPrevPos); GetAnimSamplePos(nestedAnim.Loop, nestedAnimLength, nestedAnim.StartTime, nestedAnimPrevPos, nestedAnimPos, nestedAnimPos, nestedAnimPrevPos);
ProcessAnimation(nodes, node, true, nestedAnimLength, nestedAnimPos, nestedAnimPrevPos, nestedAnim.Anim, 1.0f, weight, mode); ProcessAnimation(nodes, node, true, nestedAnimLength, nestedAnimPos, nestedAnimPrevPos, nestedAnim.Anim, 1.0f, weight, mode);
hasNested = true;
} }
} }
} }
@@ -291,7 +293,7 @@ void AnimGraphExecutor::ProcessAnimation(AnimGraphImpulse* nodes, AnimGraphNode*
dstNode.Scale = srcNode.Scale * weight; dstNode.Scale = srcNode.Scale * weight;
dstNode.Orientation = srcNode.Orientation * weight; dstNode.Orientation = srcNode.Orientation * weight;
} }
else else if (!hasNested)
{ {
dstNode = srcNode; dstNode = srcNode;
} }