Преглед на файлове

[c] Fix for #1064, delay was calculated incorrectly for non-loop previous track entries.

badlogic преди 7 години
родител
ревизия
095424ee98
променени са 1 файла, в които са добавени 8 реда и са изтрити 3 реда
  1. 8 3
      spine-c/spine-c/src/spine/AnimationState.c

+ 8 - 3
spine-c/spine-c/src/spine/AnimationState.c

@@ -720,9 +720,14 @@ spTrackEntry* spAnimationState_addAnimation (spAnimationState* self, int trackIn
 		last->next = entry;
 		if (delay <= 0) {
 			float duration = last->animationEnd - last->animationStart;
-			if (duration != 0)
-				delay += duration * (1 + (int)(last->trackTime / duration)) - spAnimationStateData_getMix(self->data, last->animation, animation);
-			else
+			if (duration != 0) {
+				if (last->loop) {
+					delay += duration * (1 + (int) (last->trackTime / duration));
+				} else {
+					delay += duration;
+				}
+				delay -= spAnimationStateData_getMix(self->data, last->animation, animation);
+			} else
 				delay = 0;
 		}
 	}