From 28d4d29bb60bd4247f829fdf3aef5d3820485ec6 Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Thu, 5 Nov 2015 15:07:00 -0800 Subject: [PATCH 1/2] smooth hold action velocity over 2 frames --- interface/src/avatar/AvatarActionHold.cpp | 6 +++++- interface/src/avatar/AvatarActionHold.h | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/interface/src/avatar/AvatarActionHold.cpp b/interface/src/avatar/AvatarActionHold.cpp index 70216eca11..6078d326e0 100644 --- a/interface/src/avatar/AvatarActionHold.cpp +++ b/interface/src/avatar/AvatarActionHold.cpp @@ -107,8 +107,12 @@ void AvatarActionHold::doKinematicUpdate(float deltaTimeStep) { withWriteLock([&]{ if (_kinematicSetVelocity) { if (_previousSet) { - glm::vec3 positionalVelocity = (_positionalTarget - _previousPositionalTarget) / deltaTimeStep; + // smooth velocity over 2 frames + glm::vec3 positionalDelta = _positionalTarget - _previousPositionalTarget; + glm::vec3 positionalVelocity = (positionalDelta + previousPositionalDelta) / (deltaTimeStep + previousDeltaTimeStep); rigidBody->setLinearVelocity(glmToBullet(positionalVelocity)); + previousPositionalDelta = positionalDelta; + previousDeltaTimeStep = deltaTimeStep; } } diff --git a/interface/src/avatar/AvatarActionHold.h b/interface/src/avatar/AvatarActionHold.h index 6badf97e9e..4856a17b89 100644 --- a/interface/src/avatar/AvatarActionHold.h +++ b/interface/src/avatar/AvatarActionHold.h @@ -46,6 +46,9 @@ private: bool _previousSet { false }; glm::vec3 _previousPositionalTarget; glm::quat _previousRotationalTarget; + + float previousDeltaTimeStep = 0.0f; + glm::vec3 previousPositionalDelta; }; #endif // hifi_AvatarActionHold_h From 46b7b92b2f76aded24a7134b9afa455197b12c5a Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Fri, 6 Nov 2015 11:54:51 -0800 Subject: [PATCH 2/2] prefix private member variables with _ --- interface/src/avatar/AvatarActionHold.cpp | 6 +++--- interface/src/avatar/AvatarActionHold.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/interface/src/avatar/AvatarActionHold.cpp b/interface/src/avatar/AvatarActionHold.cpp index 6078d326e0..866f444b32 100644 --- a/interface/src/avatar/AvatarActionHold.cpp +++ b/interface/src/avatar/AvatarActionHold.cpp @@ -109,10 +109,10 @@ void AvatarActionHold::doKinematicUpdate(float deltaTimeStep) { if (_previousSet) { // smooth velocity over 2 frames glm::vec3 positionalDelta = _positionalTarget - _previousPositionalTarget; - glm::vec3 positionalVelocity = (positionalDelta + previousPositionalDelta) / (deltaTimeStep + previousDeltaTimeStep); + glm::vec3 positionalVelocity = (positionalDelta + _previousPositionalDelta) / (deltaTimeStep + _previousDeltaTimeStep); rigidBody->setLinearVelocity(glmToBullet(positionalVelocity)); - previousPositionalDelta = positionalDelta; - previousDeltaTimeStep = deltaTimeStep; + _previousPositionalDelta = positionalDelta; + _previousDeltaTimeStep = deltaTimeStep; } } diff --git a/interface/src/avatar/AvatarActionHold.h b/interface/src/avatar/AvatarActionHold.h index 4856a17b89..eb8ebf2525 100644 --- a/interface/src/avatar/AvatarActionHold.h +++ b/interface/src/avatar/AvatarActionHold.h @@ -47,8 +47,8 @@ private: glm::vec3 _previousPositionalTarget; glm::quat _previousRotationalTarget; - float previousDeltaTimeStep = 0.0f; - glm::vec3 previousPositionalDelta; + float _previousDeltaTimeStep = 0.0f; + glm::vec3 _previousPositionalDelta; }; #endif // hifi_AvatarActionHold_h