瀏覽代碼

rigidshape and wheeledvehicle perf work
a) add more profiling for analysis
b)don't bother trying to update collision if we're set to imobility or not moving fast eough for even the contact velocity tolerance threshold to trip
c) updateforces and updateWheelParticles already trigger extendWheels(); . no need to do it a third time

AzaezelX 2 年之前
父節點
當前提交
01ba573543
共有 2 個文件被更改,包括 7 次插入1 次删除
  1. 6 0
      Engine/source/T3D/rigidShape.cpp
  2. 1 1
      Engine/source/T3D/vehicles/wheeledVehicle.cpp

+ 6 - 0
Engine/source/T3D/rigidShape.cpp

@@ -1234,6 +1234,10 @@ collision, impact and contact forces are generated.
 
 
 bool RigidShape::updateCollision(F32 dt)
 bool RigidShape::updateCollision(F32 dt)
 {
 {
+   PROFILE_SCOPE(RigidShape_updateCollision);
+
+   if (mRigid.atRest || mDisableMove || (getVelocity().lenSquared() < mDataBlock->contactTol * mDataBlock->contactTol)) return false;
+
    // Update collision information
    // Update collision information
    MatrixF mat,cmat;
    MatrixF mat,cmat;
    mConvex.transform = &mat;
    mConvex.transform = &mat;
@@ -1262,6 +1266,7 @@ on standard collision resolution formulas.
 */
 */
 bool RigidShape::resolveCollision(Rigid&  ns,CollisionList& cList)
 bool RigidShape::resolveCollision(Rigid&  ns,CollisionList& cList)
 {
 {
+   PROFILE_SCOPE(RigidShape_resolveCollision);
    // Apply impulses to resolve collision
    // Apply impulses to resolve collision
    bool collided = false;
    bool collided = false;
    for (S32 i = 0; i < cList.getCount(); i++)
    for (S32 i = 0; i < cList.getCount(); i++)
@@ -1314,6 +1319,7 @@ on the depth of penetration and the moment of inertia at the point of contact.
 */
 */
 bool RigidShape::resolveContacts(Rigid& ns,CollisionList& cList,F32 dt)
 bool RigidShape::resolveContacts(Rigid& ns,CollisionList& cList,F32 dt)
 {
 {
+   PROFILE_SCOPE(RigidShape_resolveContacts);
    // Use spring forces to manage contact constraints.
    // Use spring forces to manage contact constraints.
    bool collided = false;
    bool collided = false;
    Point3F t,p(0,0,0),l(0,0,0);
    Point3F t,p(0,0,0),l(0,0,0);

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

@@ -799,7 +799,7 @@ void WheeledVehicle::advanceTime(F32 dt)
 
 
    // Stick the wheels to the ground.  This is purely so they look
    // Stick the wheels to the ground.  This is purely so they look
    // good while the vehicle is being interpolated.
    // good while the vehicle is being interpolated.
-   extendWheels();
+   //extendWheels();
 
 
    // Update wheel angular position and slip, this is a client visual
    // Update wheel angular position and slip, this is a client visual
    // feature only, it has no affect on the physics.
    // feature only, it has no affect on the physics.