From cc03da7bb1cc26c7ecf9813591288ba65e64f6c0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 06:52:35 +0000 Subject: [PATCH] Fix SaveCachedPose chaining: exclude other SaveCachedPose from upstream collection in Pass 3 Co-authored-by: LoogLong <86428208+LoogLong@users.noreply.github.com> --- FModel/ViewModels/AnimGraphViewModel.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/FModel/ViewModels/AnimGraphViewModel.cs b/FModel/ViewModels/AnimGraphViewModel.cs index aa69ecb9..c1438ad8 100644 --- a/FModel/ViewModels/AnimGraphViewModel.cs +++ b/FModel/ViewModels/AnimGraphViewModel.cs @@ -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); }