diff --git a/Engine/source/T3D/rigid.cpp b/Engine/source/T3D/rigid.cpp index 7b84a7e18..ffdcda6ff 100644 --- a/Engine/source/T3D/rigid.cpp +++ b/Engine/source/T3D/rigid.cpp @@ -117,6 +117,7 @@ void Rigid::updateCenterOfMass() void Rigid::applyImpulse(const Point3F &r, const Point3F &impulse) { + if (impulse.lenSquared() < mass) return; atRest = false; // Linear momentum and velocity diff --git a/Engine/source/T3D/rigidShape.cpp b/Engine/source/T3D/rigidShape.cpp index 217d5f2df..f4f294198 100644 --- a/Engine/source/T3D/rigidShape.cpp +++ b/Engine/source/T3D/rigidShape.cpp @@ -1118,7 +1118,7 @@ void RigidShape::updatePos(F32 dt) { F32 k = mRigid.getKineticEnergy(); F32 G = mNetGravity* dt * TickMs / mDataBlock->integration; - F32 Kg = 0.5 * mRigid.mass * G * G; + F32 Kg = mRigid.mass * G * G; if (k < sRestTol * Kg && ++restCount > sRestCount) mRigid.setAtRest(); } diff --git a/Engine/source/T3D/vehicles/vehicle.cpp b/Engine/source/T3D/vehicles/vehicle.cpp index 721bf2fba..263f83eb1 100644 --- a/Engine/source/T3D/vehicles/vehicle.cpp +++ b/Engine/source/T3D/vehicles/vehicle.cpp @@ -808,7 +808,7 @@ void Vehicle::updatePos(F32 dt) { F32 k = mRigid.getKineticEnergy(); F32 G = mNetGravity* dt * TickMs / mDataBlock->integration; - F32 Kg = 0.5 * mRigid.mass * G * G; + F32 Kg = mRigid.mass * G * G; if (k < sRestTol * Kg && ++restCount > sRestCount) mRigid.setAtRest(); }