diff --git a/spine-as3/spine-as3/src/spine/animation/AnimationState.as b/spine-as3/spine-as3/src/spine/animation/AnimationState.as index 88926ec44..fe172e112 100644 --- a/spine-as3/spine-as3/src/spine/animation/AnimationState.as +++ b/spine-as3/spine-as3/src/spine/animation/AnimationState.as @@ -549,10 +549,10 @@ package spine.animation { } public function addEmptyAnimation(trackIndex : int, mixDuration : Number, delay : Number) : TrackEntry { - var entry : TrackEntry = addAnimation(trackIndex, emptyAnimation, false, delay <= 0 ? 1 : delay); + var entry : TrackEntry = addAnimation(trackIndex, emptyAnimation, false, delay); + if (delay <= 0) entry.delay += entry.mixDuration - mixDuration; entry.mixDuration = mixDuration; entry.trackEnd = mixDuration; - if (delay <= 0 && entry.previous != null) entry.delay = entry.previous.getTrackComplete() - entry.mixDuration + delay; return entry; } diff --git a/spine-c/spine-c/src/spine/AnimationState.c b/spine-c/spine-c/src/spine/AnimationState.c index c0ae56b63..edcacceca 100644 --- a/spine-c/spine-c/src/spine/AnimationState.c +++ b/spine-c/spine-c/src/spine/AnimationState.c @@ -868,12 +868,10 @@ spTrackEntry *spAnimationState_setEmptyAnimation(spAnimationState *self, int tra spTrackEntry * spAnimationState_addEmptyAnimation(spAnimationState *self, int trackIndex, float mixDuration, float delay) { - spTrackEntry *entry; - entry = spAnimationState_addAnimation(self, trackIndex, SP_EMPTY_ANIMATION, 0, delay <= 0 ? 1 : delay); + spTrackEntry *entry = spAnimationState_addAnimation(self, trackIndex, SP_EMPTY_ANIMATION, 0, delay); + if (delay <= 0) entry->delay += entry->mixDuration - mixDuration; entry->mixDuration = mixDuration; entry->trackEnd = mixDuration; - if (delay <= 0 && entry->previous != NULL) - entry->delay = spTrackEntry_getTrackComplete(entry->previous) - entry->mixDuration + delay; return entry; } diff --git a/spine-cpp/spine-cpp/src/spine/AnimationState.cpp b/spine-cpp/spine-cpp/src/spine/AnimationState.cpp index aa348dba7..ab12494e9 100644 --- a/spine-cpp/spine-cpp/src/spine/AnimationState.cpp +++ b/spine-cpp/spine-cpp/src/spine/AnimationState.cpp @@ -606,11 +606,10 @@ TrackEntry *AnimationState::setEmptyAnimation(size_t trackIndex, float mixDurati } TrackEntry *AnimationState::addEmptyAnimation(size_t trackIndex, float mixDuration, float delay) { - TrackEntry *entry = addAnimation(trackIndex, AnimationState::getEmptyAnimation(), false, delay <= 0 ? 1 : delay); + TrackEntry *entry = addAnimation(trackIndex, AnimationState::getEmptyAnimation(), false, delay); + if (delay <= 0) entry->_delay += entry->_mixDuration - mixDuration; entry->_mixDuration = mixDuration; entry->_trackEnd = mixDuration; - if (delay <= 0 && entry->_previous != NULL) - entry->_delay = entry->_previous->getTrackComplete() - entry->_mixDuration + delay; return entry; } diff --git a/spine-csharp/src/AnimationState.cs b/spine-csharp/src/AnimationState.cs index 9d396a27b..7ce9544cc 100644 --- a/spine-csharp/src/AnimationState.cs +++ b/spine-csharp/src/AnimationState.cs @@ -769,10 +769,10 @@ namespace Spine { /// after the event occurs. /// public TrackEntry AddEmptyAnimation (int trackIndex, float mixDuration, float delay) { - TrackEntry entry = AddAnimation(trackIndex, AnimationState.EmptyAnimation, false, delay <= 0 ? 1 : delay); + TrackEntry entry = AddAnimation(trackIndex, AnimationState.EmptyAnimation, false, delay); + if (delay <= 0) entry.delay += entry.mixDuration - mixDuration; entry.mixDuration = mixDuration; entry.trackEnd = mixDuration; - if (delay <= 0 && entry.previous != null) entry.delay = entry.previous.TrackComplete - entry.mixDuration + delay; return entry; } diff --git a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java index 8d754886f..b27bd42bb 100644 --- a/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java +++ b/spine-libgdx/spine-libgdx/src/com/esotericsoftware/spine/AnimationState.java @@ -666,10 +666,10 @@ public class AnimationState { * @return A track entry to allow further customization of animation playback. References to the track entry must not be kept * after the {@link AnimationStateListener#dispose(TrackEntry)} event occurs. */ public TrackEntry addEmptyAnimation (int trackIndex, float mixDuration, float delay) { - TrackEntry entry = addAnimation(trackIndex, emptyAnimation, false, delay <= 0 ? 1 : delay); + TrackEntry entry = addAnimation(trackIndex, emptyAnimation, false, delay); + if (delay <= 0) entry.delay += entry.mixDuration - mixDuration; entry.mixDuration = mixDuration; entry.trackEnd = mixDuration; - if (delay <= 0 && entry.previous != null) entry.delay = entry.previous.getTrackComplete() - entry.mixDuration + delay; return entry; } diff --git a/spine-lua/spine-lua/AnimationState.lua b/spine-lua/spine-lua/AnimationState.lua index 8fd39de09..76991037a 100644 --- a/spine-lua/spine-lua/AnimationState.lua +++ b/spine-lua/spine-lua/AnimationState.lua @@ -789,14 +789,12 @@ function AnimationState:setEmptyAnimation (trackIndex, mixDuration) end function AnimationState:addEmptyAnimation (trackIndex, mixDuration, delay) - local addDelay = 1 - if delay > 0 then addDelay = delay end - local entry = self:addAnimation(trackIndex, EMPTY_ANIMATION, false, addDelay) + local entry = self:addAnimation(trackIndex, EMPTY_ANIMATION, false, delay) + if delay <= 0 then + entry.delay = entry.delay + entry.mixDuration - mixDuration + end entry.mixDuration = mixDuration entry.trackEnd = mixDuration - if delay <= 0 and entry.previous then - entry.delay = entry.previous:getTrackComplete() - entry.mixDuration + delay - end return entry end diff --git a/spine-ts/core/src/AnimationState.ts b/spine-ts/core/src/AnimationState.ts index 209e76acc..1f366c66b 100644 --- a/spine-ts/core/src/AnimationState.ts +++ b/spine-ts/core/src/AnimationState.ts @@ -609,10 +609,10 @@ module spine { * @return A track entry to allow further customization of animation playback. References to the track entry must not be kept * after the {@link AnimationStateListener#dispose()} event occurs. */ addEmptyAnimation (trackIndex: number, mixDuration: number = 0, delay: number = 0) { - let entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay <= 0 ? 1 : delay); + let entry = this.addAnimationWith(trackIndex, AnimationState.emptyAnimation(), false, delay); + if (delay <= 0) entry.delay += entry.mixDuration - mixDuration; entry.mixDuration = mixDuration; entry.trackEnd = mixDuration; - if (delay <= 0 && entry.previous) entry.delay = entry.previous.getTrackComplete() - entry.mixDuration + delay; return entry; }