Просмотр исходного кода

[csharp] Ported latest AnimationState changes

badlogic 8 лет назад
Родитель
Сommit
9c1b5b209a
1 измененных файлов с 7 добавлено и 5 удалено
  1. 7 5
      spine-csharp/src/AnimationState.cs

+ 7 - 5
spine-csharp/src/AnimationState.cs

@@ -95,7 +95,7 @@ namespace Spine {
 						next.delay = 0;
 						next.delay = 0;
 						next.trackTime = nextTime + (delta * next.timeScale);
 						next.trackTime = nextTime + (delta * next.timeScale);
 						current.trackTime += currentDelta;
 						current.trackTime += currentDelta;
-						SetCurrent(i, next);
+						SetCurrent(i, next, true);
 						while (next.mixingFrom != null) {
 						while (next.mixingFrom != null) {
 							next.mixTime += currentDelta;
 							next.mixTime += currentDelta;
 							next = next.mixingFrom;
 							next = next.mixingFrom;
@@ -378,12 +378,12 @@ namespace Spine {
 			queue.Drain();
 			queue.Drain();
 		}
 		}
 
 
-		private void SetCurrent (int index, TrackEntry current) {
+		private void SetCurrent (int index, TrackEntry current, bool interrupt) {
 			TrackEntry from = ExpandToIndex(index);
 			TrackEntry from = ExpandToIndex(index);
 			tracks.Items[index] = current;
 			tracks.Items[index] = current;
 
 
 			if (from != null) {
 			if (from != null) {
-				queue.Interrupt(from);
+				if (interrupt) queue.Interrupt(from);
 				current.mixingFrom = from;
 				current.mixingFrom = from;
 				current.mixTime = 0;
 				current.mixTime = 0;
 
 
@@ -413,6 +413,7 @@ namespace Spine {
 		/// after <see cref="AnimationState.Dispose"/>.</returns>
 		/// after <see cref="AnimationState.Dispose"/>.</returns>
 		public TrackEntry SetAnimation (int trackIndex, Animation animation, bool loop) {
 		public TrackEntry SetAnimation (int trackIndex, Animation animation, bool loop) {
 			if (animation == null) throw new ArgumentNullException("animation", "animation cannot be null.");
 			if (animation == null) throw new ArgumentNullException("animation", "animation cannot be null.");
+			bool interrupt = true;
 			TrackEntry current = ExpandToIndex(trackIndex);
 			TrackEntry current = ExpandToIndex(trackIndex);
 			if (current != null) {
 			if (current != null) {
 				if (current.nextTrackLast == -1) {
 				if (current.nextTrackLast == -1) {
@@ -422,12 +423,13 @@ namespace Spine {
 					queue.End(current);
 					queue.End(current);
 					DisposeNext(current);
 					DisposeNext(current);
 					current = current.mixingFrom;
 					current = current.mixingFrom;
+					interrupt = false;
 				} else {
 				} else {
 					DisposeNext(current);
 					DisposeNext(current);
 				}
 				}
 			}
 			}
 			TrackEntry entry = NewTrackEntry(trackIndex, animation, loop, current);
 			TrackEntry entry = NewTrackEntry(trackIndex, animation, loop, current);
-			SetCurrent(trackIndex, entry);
+			SetCurrent(trackIndex, entry, interrupt);
 			queue.Drain();
 			queue.Drain();
 			return entry;
 			return entry;
 		}
 		}
@@ -460,7 +462,7 @@ namespace Spine {
 			TrackEntry entry = NewTrackEntry(trackIndex, animation, loop, last);
 			TrackEntry entry = NewTrackEntry(trackIndex, animation, loop, last);
 
 
 			if (last == null) {
 			if (last == null) {
-				SetCurrent(trackIndex, entry);
+				SetCurrent(trackIndex, entry, true);
 				queue.Drain();
 				queue.Drain();
 			} else {
 			} else {
 				last.next = entry;
 				last.next = entry;