diff --git a/libraries/physics/src/EntityMotionState.cpp b/libraries/physics/src/EntityMotionState.cpp index 2c130274bc..5478221607 100644 --- a/libraries/physics/src/EntityMotionState.cpp +++ b/libraries/physics/src/EntityMotionState.cpp @@ -446,8 +446,9 @@ bool EntityMotionState::shouldSendUpdate(uint32_t simulationStep) { void EntityMotionState::updateSendVelocities() { if (!_body->isActive()) { - // make sure all derivatives are zero - clearObjectVelocities(); + if (!_body->isKinematicObject()) { + clearObjectVelocities(); + } // we pretend we sent the inactive update for this object _numInactiveUpdates = 1; } else { diff --git a/libraries/physics/src/PhysicalEntitySimulation.cpp b/libraries/physics/src/PhysicalEntitySimulation.cpp index 5666e75aa1..2004f8953d 100644 --- a/libraries/physics/src/PhysicalEntitySimulation.cpp +++ b/libraries/physics/src/PhysicalEntitySimulation.cpp @@ -138,7 +138,6 @@ void PhysicalEntitySimulation::changeEntityInternal(EntityItemPointer entity) { btRigidBody* body = motionState->getRigidBody(); if (body) { body->forceActivationState(ISLAND_SLEEPING); - motionState->updateSendVelocities(); // has side-effect of zeroing entity velocities for inactive body } // send packet to remove ownership