Sfoglia il codice sorgente

Added AnimationState setNext and clearNext.

http://esotericsoftware.com/forum/Keep-track-of-added-animations-13896
Nathan Sweet 5 anni fa
parent
commit
94e6e41518

+ 12 - 1
spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java

@@ -522,6 +522,11 @@ public class AnimationState {
 		queue.drain();
 	}
 
+	/** Removes the {@link TrackEntry#getNext() next entry} and all entries after it for the specified entry. */
+	public void clearNext (TrackEntry entry) {
+		disposeNext(entry.next);
+	}
+
 	private void setCurrent (int index, TrackEntry current, boolean interrupt) {
 		TrackEntry from = expandToIndex(index);
 		tracks.set(index, current);
@@ -1084,11 +1089,17 @@ public class AnimationState {
 			this.drawOrderThreshold = drawOrderThreshold;
 		}
 
-		/** The animation queued to start after this animation, or null. <code>next</code> makes up a linked list. */
+		/** The animation queued to start after this animation, or null if there is none. <code>next</code> makes up a linked list.
+		 * It cannot be set to null, use {@link AnimationState#clearNext(TrackEntry)} instead. */
 		public @Null TrackEntry getNext () {
 			return next;
 		}
 
+		public void setNext (TrackEntry next) {
+			if (next == null) throw new IllegalArgumentException("next cannot be null.");
+			this.next = next;
+		}
+
 		/** Returns true if at least one loop has been completed.
 		 * <p>
 		 * See {@link AnimationStateListener#complete(TrackEntry)}. */