Procházet zdrojové kódy

Fixed bugs with timeScale.

NathanSweet před 12 roky
rodič
revize
b854dd94c3

+ 6 - 5
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. */

+ 5 - 4
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.

+ 5 - 4
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.