diff --git a/spine-csharp/src/AnimationState.cs b/spine-csharp/src/AnimationState.cs index 83f01a231..979bb4896 100644 --- a/spine-csharp/src/AnimationState.cs +++ b/spine-csharp/src/AnimationState.cs @@ -595,9 +595,14 @@ namespace Spine { // Queue complete if completed a loop iteration or the animation. bool complete = false; - if (entry.loop) - complete = duration == 0 || (trackLastWrapped > entry.trackTime % duration); - else + if (entry.loop) { + if (duration == 0) + complete = true; + else { + int cycles = (int)(entry.trackTime / duration); + complete = cycles > 0 && cycles > (int)(entry.trackLast / duration); + } + } else complete = animationTime >= animationEnd && entry.animationLast < animationEnd; if (complete) queue.Complete(entry);