From e11e0d42d85e70ee55e32d0d362bb666f2dcf6fa Mon Sep 17 00:00:00 2001 From: badlogic Date: Mon, 15 Oct 2018 16:40:31 +0200 Subject: [PATCH] [cpp] Ported 0 timeScale fix, see #1194. --- spine-cpp/spine-cpp/src/spine/AnimationState.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spine-cpp/spine-cpp/src/spine/AnimationState.cpp b/spine-cpp/spine-cpp/src/spine/AnimationState.cpp index 89b886609..33bb57c75 100644 --- a/spine-cpp/spine-cpp/src/spine/AnimationState.cpp +++ b/spine-cpp/spine-cpp/src/spine/AnimationState.cpp @@ -717,7 +717,7 @@ bool AnimationState::updateMixingFrom(TrackEntry *to, float delta) { 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; @@ -728,6 +728,12 @@ bool AnimationState::updateMixingFrom(TrackEntry *to, float delta) { 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;