From 97f9b7e4d28bacc19d18a44e16772cb4c27fa0c8 Mon Sep 17 00:00:00 2001 From: NathanSweet Date: Thu, 10 Oct 2013 10:15:53 +0200 Subject: [PATCH] Fixed clearing tracks in event callbacks. closes #134 --- spine-c/src/spine/AnimationState.c | 2 ++ spine-csharp/src/AnimationState.cs | 2 +- spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/spine-c/src/spine/AnimationState.c b/spine-c/src/spine/AnimationState.c index 3ca35b3da..abb50fcc8 100644 --- a/spine-c/src/spine/AnimationState.c +++ b/spine-c/src/spine/AnimationState.c @@ -107,6 +107,7 @@ void spAnimationState_update (spAnimationState* self, float delta) { int count = (int)(time / endTime); if (current->listener) current->listener(self, i, ANIMATION_COMPLETE, 0, count); if (self->listener) self->listener(self, i, ANIMATION_COMPLETE, 0, count); + if (i >= self->trackCount || !self->tracks[i]) continue; } if (current->next) { @@ -160,6 +161,7 @@ void spAnimationState_apply (spAnimationState* self, spSkeleton* skeleton) { if (self->listener) self->listener(self, i, ANIMATION_EVENT, event, 0); } + if (i >= self->trackCount || !self->tracks[i]) continue; current->lastTime = current->time; } } diff --git a/spine-csharp/src/AnimationState.cs b/spine-csharp/src/AnimationState.cs index 7f62aea7d..8d36efddf 100644 --- a/spine-csharp/src/AnimationState.cs +++ b/spine-csharp/src/AnimationState.cs @@ -57,7 +57,7 @@ namespace Spine { public void Update (float delta) { delta *= timeScale; - for (int i = 0, n = tracks.Count; i < n; i++) { + for (int i = 0; i < tracks.Count; i++) { TrackEntry current = tracks[i]; if (current == null) continue; diff --git a/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java b/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java index 43b37b2d5..2e96221e2 100644 --- a/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java +++ b/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java @@ -52,7 +52,7 @@ public class AnimationState { public void update (float delta) { delta *= timeScale; - for (int i = 0, n = tracks.size; i < n; i++) { + for (int i = 0; i < tracks.size; i++) { TrackEntry current = tracks.get(i); if (current == null) continue;