Эх сурвалжийг харах

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

badlogic 7 жил өмнө
parent
commit
18258e9603

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