diff --git a/spine-c/src/spine/Animation.c b/spine-c/src/spine/Animation.c index bcf257724..b55f2a86a 100644 --- a/spine-c/src/spine/Animation.c +++ b/spine-c/src/spine/Animation.c @@ -518,6 +518,8 @@ void _EventTimeline_apply (const Timeline* timeline, Skeleton* skeleton, float l EventTimeline* self = (EventTimeline*)timeline; int frameIndex; + if (lastTime >= self->frames[self->framesLength - 1]) return; // Last time is after last frame. + if (lastTime > time) { /* Fire events after last time for looped animations. */ _EventTimeline_apply(timeline, skeleton, lastTime, (float)INT_MAX, firedEvents, eventCount, alpha); diff --git a/spine-csharp/src/Animation.cs b/spine-csharp/src/Animation.cs index 8aca5e5c8..d08703b98 100644 --- a/spine-csharp/src/Animation.cs +++ b/spine-csharp/src/Animation.cs @@ -463,6 +463,8 @@ namespace Spine { float[] frames = this.frames; int frameCount = frames.Length; + if (lastTime >= frames[frameCount - 1]) return; // Last time is after last frame. + if (lastTime > time) { // Fire events after last time for looped animations. Apply(skeleton, lastTime, int.MaxValue, firedEvents, alpha); lastTime = 0; diff --git a/spine-libgdx/src/com/esotericsoftware/spine/Animation.java b/spine-libgdx/src/com/esotericsoftware/spine/Animation.java index 34d0a99f1..e89a89e43 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/Animation.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/Animation.java @@ -537,6 +537,8 @@ public class Animation { float[] frames = this.frames; int frameCount = frames.length; + if (lastTime >= frames[frameCount - 1]) return; // Last time is after last frame. + if (lastTime > time) { // Fire events after last time for looped animations. apply(skeleton, lastTime, Integer.MAX_VALUE, firedEvents, alpha); lastTime = 0;