diff --git a/spine-c/src/spine/AnimationState.c b/spine-c/src/spine/AnimationState.c index 93e78c4a6..4c54f76e2 100644 --- a/spine-c/src/spine/AnimationState.c +++ b/spine-c/src/spine/AnimationState.c @@ -86,19 +86,20 @@ void AnimationState_dispose (AnimationState* self) { void AnimationState_update (AnimationState* self, float delta) { int i; - float time, endTime; + float time, endTime, trackDelta; + delta *= self->timeScale; for (i = 0; i < self->trackCount; i++) { TrackEntry* current = self->tracks[i]; if (!current) continue; - delta *= self->timeScale * current->timeScale; - time = current->time + delta; + trackDelta = delta * current->timeScale; + time = current->time + trackDelta; endTime = current->endTime; current->time = time; if (current->previous) { - current->previous->time += delta; - current->mixTime += delta; + current->previous->time += trackDelta; + current->mixTime += trackDelta; } /* Check if completed the animation or a loop iteration. */ diff --git a/spine-csharp/src/AnimationState.cs b/spine-csharp/src/AnimationState.cs index bf11f9282..fcca14cba 100644 --- a/spine-csharp/src/AnimationState.cs +++ b/spine-csharp/src/AnimationState.cs @@ -56,18 +56,19 @@ namespace Spine { } public void Update (float delta) { + delta *= timeScale; for (int i = 0, n = tracks.Count; i < n; i++) { TrackEntry current = tracks[i]; if (current == null) continue; - delta *= timeScale * current.timeScale; - float time = current.time + delta; + float trackDelta = delta * current.timeScale; + float time = current.time + trackDelta; float endTime = current.endTime; current.time = time; if (current.previous != null) { - current.previous.time += delta; - current.mixTime += delta; + current.previous.time += trackDelta; + current.mixTime += trackDelta; } // Check if completed the animation or a loop iteration. diff --git a/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java b/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java index d548dcb51..cbbbcdc96 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java @@ -51,18 +51,19 @@ public class AnimationState { } public void update (float delta) { + delta *= timeScale; for (int i = 0, n = tracks.size; i < n; i++) { TrackEntry current = tracks.get(i); if (current == null) continue; - delta *= timeScale * current.timeScale; - float time = current.time + delta; + float trackDelta = delta * current.timeScale; + float time = current.time + trackDelta; float endTime = current.endTime; current.time = time; if (current.previous != null) { - current.previous.time += delta; - current.mixTime += delta; + current.previous.time += trackDelta; + current.mixTime += trackDelta; } // Check if completed the animation or a loop iteration.