|
@@ -436,9 +436,14 @@ export class AnimationState {
|
|
|
|
|
|
// Queue complete if completed a loop iteration or the animation.
|
|
|
let complete = false;
|
|
|
- if (entry.loop)
|
|
|
- complete = duration == 0 || trackLastWrapped > entry.trackTime % duration;
|
|
|
- else
|
|
|
+ if (entry.loop) {
|
|
|
+ if (duration == 0)
|
|
|
+ complete = true;
|
|
|
+ else {
|
|
|
+ const cycles = Math.floor(entry.trackTime / duration);
|
|
|
+ complete = cycles > 0 && cycles > Math.floor(entry.trackTime / duration);
|
|
|
+ }
|
|
|
+ } else
|
|
|
complete = animationTime >= animationEnd && entry.animationLast < animationEnd;
|
|
|
if (complete) this.queue.complete(entry);
|
|
|
|