diff --git a/spine-csharp/src/AnimationState.cs b/spine-csharp/src/AnimationState.cs index 8ba41b284..8756f7b70 100644 --- a/spine-csharp/src/AnimationState.cs +++ b/spine-csharp/src/AnimationState.cs @@ -840,7 +840,7 @@ namespace Spine { } class EventQueue { - private readonly ExposedList eventQueueEntries = new ExposedList(); + private readonly List eventQueueEntries = new List(); public bool drainDisabled; private readonly AnimationState state; @@ -900,11 +900,11 @@ namespace Spine { drainDisabled = true; var entries = this.eventQueueEntries; - var entriesItems = entries.Items; AnimationState state = this.state; - for (int i = 0, n = entries.Count; i < n; i++) { - var queueEntry = entriesItems[i]; + // Don't cache entries.Count so callbacks can queue their own events (eg, call SetAnimation in AnimationState_Complete). + for (int i = 0; i < entries.Count; i++) { + var queueEntry = entries[i]; TrackEntry trackEntry = queueEntry.entry; switch (queueEntry.type) {