Bladeren bron

[cpp] Ported 0 timeScale fix, see #1194.

badlogic 7 jaren geleden
bovenliggende
commit
e11e0d42d8
1 gewijzigde bestanden met toevoegingen van 7 en 1 verwijderingen
  1. 7 1
      spine-cpp/spine-cpp/src/spine/AnimationState.cpp

+ 7 - 1
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;