From 83ab9941811332297aa4dff393f644ae3992b1e9 Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 2 Feb 2018 16:42:51 -0800 Subject: [PATCH] avoid initial bad measure of tractor target's velocity --- libraries/physics/src/ObjectActionTractor.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/libraries/physics/src/ObjectActionTractor.cpp b/libraries/physics/src/ObjectActionTractor.cpp index 629d8baefe..2b787a98f8 100644 --- a/libraries/physics/src/ObjectActionTractor.cpp +++ b/libraries/physics/src/ObjectActionTractor.cpp @@ -126,17 +126,16 @@ bool ObjectActionTractor::prepareForTractorUpdate(btScalar deltaTimeStep) { withWriteLock([&]{ if (linearValid && linearTractorCount > 0) { position /= linearTractorCount; + _lastPositionTarget = _positionalTarget; if (_positionalTargetSet) { _lastPositionTarget = _positionalTarget; - } else { - _lastPositionTarget = position; - } - _positionalTarget = position; - if (deltaTimeStep > EPSILON) { - // blend the new velocity with the old (low-pass filter) - glm::vec3 newVelocity = (1.0f / deltaTimeStep) * (position - _lastPositionTarget); - const float blend = 0.25f; - _linearVelocityTarget = (1.0f - blend) * _linearVelocityTarget + blend * newVelocity; + _positionalTarget = position; + if (deltaTimeStep > EPSILON) { + // blend the new velocity with the old (low-pass filter) + glm::vec3 newVelocity = (1.0f / deltaTimeStep) * (_positionalTarget - _lastPositionTarget); + const float blend = 0.25f; + _linearVelocityTarget = (1.0f - blend) * _linearVelocityTarget + blend * newVelocity; + } } _positionalTargetSet = true; _active = true;