浏览代码

Merge pull request #1409 from Azaezel/alpha41/soImpulsive

skip out on impulses that have no chance of moving the object
Brian Roberts 7 月之前
父节点
当前提交
bab30568eb
共有 3 个文件被更改,包括 3 次插入2 次删除
  1. 1 0
      Engine/source/T3D/rigid.cpp
  2. 1 1
      Engine/source/T3D/rigidShape.cpp
  3. 1 1
      Engine/source/T3D/vehicles/vehicle.cpp

+ 1 - 0
Engine/source/T3D/rigid.cpp

@@ -117,6 +117,7 @@ void Rigid::updateCenterOfMass()
 
 
 void Rigid::applyImpulse(const Point3F &r, const Point3F &impulse)
 void Rigid::applyImpulse(const Point3F &r, const Point3F &impulse)
 {
 {
+   if (impulse.lenSquared() < mass) return;
    atRest = false;
    atRest = false;
 
 
    // Linear momentum and velocity
    // Linear momentum and velocity

+ 1 - 1
Engine/source/T3D/rigidShape.cpp

@@ -1118,7 +1118,7 @@ void RigidShape::updatePos(F32 dt)
       {
       {
          F32 k = mRigid.getKineticEnergy();
          F32 k = mRigid.getKineticEnergy();
          F32 G = mNetGravity* dt * TickMs / mDataBlock->integration;
          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)
          if (k < sRestTol * Kg && ++restCount > sRestCount)
             mRigid.setAtRest();
             mRigid.setAtRest();
       }
       }

+ 1 - 1
Engine/source/T3D/vehicles/vehicle.cpp

@@ -808,7 +808,7 @@ void Vehicle::updatePos(F32 dt)
       {
       {
          F32 k = mRigid.getKineticEnergy();
          F32 k = mRigid.getKineticEnergy();
          F32 G = mNetGravity* dt * TickMs / mDataBlock->integration;
          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)
          if (k < sRestTol * Kg && ++restCount > sRestCount)
             mRigid.setAtRest();
             mRigid.setAtRest();
       }
       }