From 64d85f466d3583d3bf01fc608e5459def73f6e39 Mon Sep 17 00:00:00 2001 From: Arne Kiesewetter Date: Sat, 14 Mar 2026 13:46:30 +0100 Subject: [PATCH] Also set last position of animators to -1 when mappers are invalid --- CommunityBugFixCollection/PauseAnimatorUpdates.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CommunityBugFixCollection/PauseAnimatorUpdates.cs b/CommunityBugFixCollection/PauseAnimatorUpdates.cs index c7f8bdd..2feeaf6 100644 --- a/CommunityBugFixCollection/PauseAnimatorUpdates.cs +++ b/CommunityBugFixCollection/PauseAnimatorUpdates.cs @@ -19,17 +19,21 @@ private static bool Prefix(Animator __instance) __instance._playback.ClipLength = (__instance.Clip.Asset?.Data?.GlobalDuration).GetValueOrDefault(); - if (!__instance._fieldMappersValid) - __instance.GenerateFieldMappers(); - if (!_lastPositionByAnimator.TryGetValue(__instance, out var lastPosition)) { - // Make sure that initial state is always applied, + // Make sure that initial state is always applied for new animators, // since playback position can't be < 0 lastPosition = -1; _lastPositionByAnimator.Add(__instance, lastPosition); } + if (!__instance._fieldMappersValid) + { + // Also make sure that initial state is always applied after the field mappers change + lastPosition.Value = -1; + __instance.GenerateFieldMappers(); + } + if (lastPosition != __instance.Position) { var position = lastPosition.Value = __instance.Position;