From 5aee2f35f058cd75587a3ba17c1235441f758cb1 Mon Sep 17 00:00:00 2001 From: Angus Antley Date: Wed, 24 Apr 2019 08:27:36 -0700 Subject: [PATCH] updated the ease in function --- libraries/animation/src/Rig.cpp | 26 +++++++++++++++----------- libraries/animation/src/Rig.h | 2 +- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/libraries/animation/src/Rig.cpp b/libraries/animation/src/Rig.cpp index 96d6991a8b..f4f304bdb4 100644 --- a/libraries/animation/src/Rig.cpp +++ b/libraries/animation/src/Rig.cpp @@ -2011,25 +2011,29 @@ void Rig::updateFromControllerParameters(const ControllerParameters& params, flo return; } - const float OVERLAY_RAMP_RATE = 8.0f; + if (_previousIsTalking != params.isTalking) { + _talkIdleInterpTime = 0.0f; + } + _previousIsTalking = params.isTalking; + + const float TOTAL_INTERP_TIME = 1.5f; if (params.isTalking) { if (_talkIdleInterpTime < 1.0f) { - _talkIdleInterpTime += dt; - _talkIdleOverlayAlpha = glm::clamp((_talkIdleInterpTime*_talkIdleInterpTime*_talkIdleInterpTime), 0.0f, 1.0f); - //_talkIdleOverlayAlpha = glm::clamp(_talkIdleOverlayAlpha + OVERLAY_RAMP_RATE * dt, 0.0f, 1.0f); + _talkIdleInterpTime += dt / TOTAL_INTERP_TIME; + float talkAlpha = glm::clamp((_talkIdleInterpTime*_talkIdleInterpTime*_talkIdleInterpTime), 0.0f, 1.0f); + _animVars.set("idleOverlayAlpha", talkAlpha); } else { - _talkIdleInterpTime = 1.0f; + _animVars.set("idleOverlayAlpha", 1.0f); } } else { - if (_talkIdleOverlayAlpha > 0.0f) { - _talkIdleInterpTime += dt; - _talkIdleOverlayAlpha = glm::clamp((_talkIdleInterpTime*_talkIdleInterpTime*_talkIdleInterpTime), 0.0f, 1.0f); - // _talkIdleOverlayAlpha = glm::clamp(_talkIdleOverlayAlpha - OVERLAY_RAMP_RATE * dt, 0.0f, 1.0f); + if (_talkIdleInterpTime < 1.0f) { + _talkIdleInterpTime += dt / TOTAL_INTERP_TIME; + float talkAlpha = 1.0f - glm::clamp((_talkIdleInterpTime*_talkIdleInterpTime*_talkIdleInterpTime), 0.0f, 1.0f); + _animVars.set("idleOverlayAlpha", talkAlpha); } else { - _talkIdleInterpTime = 0.0f; + _animVars.set("idleOverlayAlpha", 0.0f); } } - _animVars.set("idleOverlayAlpha", _talkIdleOverlayAlpha); _headEnabled = params.primaryControllerFlags[PrimaryControllerType_Head] & (uint8_t)ControllerFlags::Enabled; bool leftHandEnabled = params.primaryControllerFlags[PrimaryControllerType_LeftHand] & (uint8_t)ControllerFlags::Enabled; diff --git a/libraries/animation/src/Rig.h b/libraries/animation/src/Rig.h index e58bee7c55..fd86b713f7 100644 --- a/libraries/animation/src/Rig.h +++ b/libraries/animation/src/Rig.h @@ -422,8 +422,8 @@ protected: float _leftHandOverlayAlpha { 0.0f }; float _rightHandOverlayAlpha { 0.0f }; - float _talkIdleOverlayAlpha { 0.0f }; float _talkIdleInterpTime { 0.0f }; + bool _previousIsTalking { false }; SimpleMovingAverage _averageForwardSpeed { 10 }; SimpleMovingAverage _averageLateralSpeed { 10 };