Fix SaveCachedPose chaining: exclude other SaveCachedPose from upstream collection in Pass 3

Co-authored-by: LoogLong <86428208+LoogLong@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-03-05 06:52:35 +00:00
parent 87cb948dfb
commit cc03da7bb1

View File

@ -235,6 +235,8 @@ public class AnimGraphViewModel
// SaveCachedPose can only exist in animation blueprint layers (defined by _Root nodes).
// Determine the correct _Root layer by tracing downstream UseCachedPose consumers
// back through the state machine hierarchy to their parent animation blueprint layer.
// Each SaveCachedPose's upstream chain excludes other SaveCachedPose nodes so that
// chained SaveCachedPose → UseCachedPose → SaveCachedPose are independently placed.
if (primaryGraphLayer != null)
{
var unassignedSavePoseNodes = vm.Nodes
@ -250,7 +252,8 @@ public class AnimGraphViewModel
{
if (!assigned.Add(saveNode)) continue;
var targetLayer = FindOwnerRootLayer(saveNode, vm, lookups) ?? primaryGraphLayer;
var inputChain = CollectUpstream(saveNode, upstreamOf, assigned);
var inputChain = CollectUpstream(saveNode, upstreamOf, assigned,
excludeNode: IsSaveCachedPoseNode);
targetLayer.Nodes.AddRange(inputChain);
affectedLayers.Add(targetLayer);
}