From d4cc16315f0698f286726a0b4f7637eb756803a3 Mon Sep 17 00:00:00 2001 From: Harald Csaszar Date: Tue, 11 Jul 2023 17:39:57 +0200 Subject: [PATCH] [unity] Fixed Timeline SpineAnimationStateClip ignoring seek and loop. Closes #2316. Removed redundant multiple skeleton updates when multiple animations are started. --- .../SpineAnimationStateMixerBehaviour.cs | 7 +++---- .../com.esotericsoftware.spine.timeline/package.json | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/spine-unity/Modules/com.esotericsoftware.spine.timeline/Runtime/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs b/spine-unity/Modules/com.esotericsoftware.spine.timeline/Runtime/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs index 84725b448a..21875d45b2 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.timeline/Runtime/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs +++ b/spine-unity/Modules/com.esotericsoftware.spine.timeline/Runtime/SpineAnimationState/SpineAnimationStateMixerBehaviour.cs @@ -165,7 +165,7 @@ public override void ProcessFrame (Playable playable, FrameData info, object pla for (int i = 0; i < inputCount; i++) { float lastInputWeight = lastInputWeights[i]; float inputWeight = playable.GetInputWeight(i); - bool clipStarted = lastInputWeight == 0 && inputWeight > 0; + bool clipStarted = (lastInputWeight == 0 && inputWeight > 0) || info.seekOccurred || info.timeLooped; if (inputWeight > 0) anyClipPlaying = true; lastInputWeights[i] = inputWeight; @@ -231,10 +231,9 @@ public override void ProcessFrame (Playable playable, FrameData info, object pla timelineStartedTrackEntry = trackEntry; } - //else Debug.LogWarningFormat("Animation named '{0}' not found", clipData.animationName); } - - // Ensure that the first frame ends with an updated mesh. + } + if (numStartingClips > 0) { if (skeletonAnimation) { skeletonAnimation.Update(0); skeletonAnimation.LateUpdate(); diff --git a/spine-unity/Modules/com.esotericsoftware.spine.timeline/package.json b/spine-unity/Modules/com.esotericsoftware.spine.timeline/package.json index a83045a1ae..f417f18b61 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.timeline/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.timeline/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.timeline", "displayName": "Spine Timeline Extensions", "description": "This plugin provides integration of spine-unity for the Unity Timeline.\n\nPrerequisites:\nIt requires a working installation of the spine-unity and spine-csharp runtimes as UPM packages (not as spine-unity unitypackage), version 4.1.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.1.9", + "version": "4.1.10", "unity": "2018.3", "author": { "name": "Esoteric Software",