|
|
@@ -342,7 +342,9 @@ bool AnimationClip::update(unsigned long elapsedTime)
|
|
|
// Check to see if clip is complete.
|
|
|
if (_repeatCount != REPEAT_INDEFINITE && ((_speed >= 0.0f && _elapsedTime >= (long) _activeDuration) || (_speed <= 0.0f && _elapsedTime <= 0L)))
|
|
|
{
|
|
|
- resetClipStateBit(CLIP_IS_STARTED_BIT);
|
|
|
+ if (!isClipStateBitSet(CLIP_IS_FADING_OUT_BIT))
|
|
|
+ resetClipStateBit(CLIP_IS_STARTED_BIT);
|
|
|
+
|
|
|
if (_speed >= 0.0f)
|
|
|
{
|
|
|
// If _duration == 0, we have a "pose". Just set currentTime to 0.
|
|
|
@@ -416,13 +418,13 @@ bool AnimationClip::update(unsigned long elapsedTime)
|
|
|
if (isClipStateBitSet(CLIP_IS_FADING_OUT_STARTED_BIT)) // Calculate elapsed time since the fade out begin.
|
|
|
{
|
|
|
GP_ASSERT(_crossFadeToClip);
|
|
|
- _crossFadeOutElapsed = (Game::getGameTime() - _crossFadeToClip->_timeStarted) * abs(_speed);
|
|
|
+ _crossFadeOutElapsed = (Game::getGameTime() - _crossFadeToClip->_timeStarted) * fabs(_speed);
|
|
|
resetClipStateBit(CLIP_IS_FADING_OUT_STARTED_BIT);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// continue tracking elapsed time.
|
|
|
- _crossFadeOutElapsed += elapsedTime * abs(_speed);
|
|
|
+ _crossFadeOutElapsed += elapsedTime * fabs(_speed);
|
|
|
}
|
|
|
|
|
|
if (_crossFadeOutElapsed < _crossFadeOutDuration)
|