diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java
index 8a23933f6c..b8c37ce0e3 100644
--- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java
+++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java
@@ -522,6 +522,11 @@ public void clearTrack (int trackIndex) {
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 void setDrawOrderThreshold (float drawOrderThreshold) {
this.drawOrderThreshold = drawOrderThreshold;
}
- /** The animation queued to start after this animation, or null. next
makes up a linked list. */
+ /** The animation queued to start after this animation, or null if there is none. next
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.
*
* See {@link AnimationStateListener#complete(TrackEntry)}. */