From 01b20b568b1772418e13cf4cdcec76febc916b80 Mon Sep 17 00:00:00 2001 From: badlogic Date: Mon, 10 Apr 2017 13:37:36 +0200 Subject: [PATCH] [c] Fixed dipping problem fix --- spine-c/spine-c/src/spine/AnimationState.c | 23 +++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/spine-c/spine-c/src/spine/AnimationState.c b/spine-c/spine-c/src/spine/AnimationState.c index c2592c3b5..dd47eee5d 100644 --- a/spine-c/spine-c/src/spine/AnimationState.c +++ b/spine-c/spine-c/src/spine/AnimationState.c @@ -591,17 +591,18 @@ void _spAnimationState_setCurrent (spAnimationState* self, int index, spTrackEnt mixingFrom = from->mixingFrom; if (mixingFrom != 0 && from->mixDuration > 0) { - if (self->multipleMixing && from->mixTime / from->mixDuration < 0.5 && mixingFrom->animation != SP_EMPTY_ANIMATION) { - current->mixingFrom = mixingFrom; - mixingFrom->mixingFrom = from; - mixingFrom->mixTime = from->mixDuration - from->mixTime; - mixingFrom->mixDuration = from->mixDuration; - from->mixingFrom = 0; - from = mixingFrom; - } - - current->mixAlpha *= MIN(from->mixTime / from->mixDuration, 1); - if (!self->multipleMixing) { + if (self->multipleMixing) { + current->mixAlpha *= MIN(from->mixTime / from->mixDuration, 1); + } else { + if (from->mixTime / from->mixDuration < 0.5 && mixingFrom->animation != SP_EMPTY_ANIMATION) { + current->mixingFrom = mixingFrom; + mixingFrom->mixingFrom = from; + mixingFrom->mixTime = from->mixDuration - from->mixTime; + mixingFrom->mixDuration = from->mixDuration; + from->mixingFrom = 0; + from = mixingFrom; + } + from->mixAlpha = 0; from->mixTime = 0; from->mixDuration = 0;