From 18258e96036eb71af8f23117c387a581bd87f0a6 Mon Sep 17 00:00:00 2001 From: badlogic Date: Mon, 15 Oct 2018 16:42:22 +0200 Subject: [PATCH] [c] Ported 0 timeScale fix, see #1194. --- spine-c/spine-c/src/spine/AnimationState.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spine-c/spine-c/src/spine/AnimationState.c b/spine-c/spine-c/src/spine/AnimationState.c index daeb9a826..553367425 100644 --- a/spine-c/spine-c/src/spine/AnimationState.c +++ b/spine-c/spine-c/src/spine/AnimationState.c @@ -327,7 +327,7 @@ int /*boolean*/ _spAnimationState_updateMixingFrom (spAnimationState* self, spTr from->trackLast = from->nextTrackLast; /* Require mixTime > 0 to ensure the mixing from entry was applied at least once. */ - if (to->mixTime > 0 && (to->mixTime >= to->mixDuration || to->timeScale == 0)) { + if (to->mixTime > 0 && to->mixTime >= to->mixDuration) { /* Require totalAlpha == 0 to ensure mixing is complete, unless mixDuration == 0 (the transition is a single frame). */ if (from->totalAlpha == 0 || to->mixDuration == 0) { to->mixingFrom = from->mixingFrom; @@ -338,6 +338,12 @@ int /*boolean*/ _spAnimationState_updateMixingFrom (spAnimationState* self, spTr return finished; } + if (to->timeScale == 0 && to->mixingTo) { + to->timeScale = 1; + to->mixTime = 0; + to->mixDuration = 0; + } + from->trackTime += delta * from->timeScale; to->mixTime += delta * to->timeScale; return 0;