Browse Source

Merge pull request #465 from blackberry-gaming/next-kcunney

Fixes crossfading bug on macOS and iOS platforms
Sean Paul Taylor 13 năm trước cách đây
mục cha
commit
5799113fd4
1 tập tin đã thay đổi với 3 bổ sung2 xóa
  1. 3 2
      gameplay/src/AnimationClip.cpp

+ 3 - 2
gameplay/src/AnimationClip.cpp

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