From 325b3a97c0b67ffee0d114149a3eea699c8b8f69 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Sun, 9 Mar 2025 18:40:49 -0500 Subject: [PATCH] skip out on impulses that have no chance of moving the object also, sRestTol already is a 0.5 multiplier --- Engine/source/T3D/rigid.cpp | 1 + Engine/source/T3D/rigidShape.cpp | 2 +- Engine/source/T3D/vehicles/vehicle.cpp | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) 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(); }