From b0e6e2f41220c2d71e6fed42bd81cec41b8f2e80 Mon Sep 17 00:00:00 2001 From: "erwin.coumans" Date: Mon, 21 Dec 2009 22:59:12 +0000 Subject: [PATCH] Expose vehicle maxSuspension force (instead of hard-coded 6000 value). Thanks blakflow for the patch, see Issue 290 --- src/BulletDynamics/Vehicle/btRaycastVehicle.cpp | 6 +++--- src/BulletDynamics/Vehicle/btRaycastVehicle.h | 4 +++- src/BulletDynamics/Vehicle/btWheelInfo.h | 3 +++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp b/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp index 031fcb5b4..4750b05b5 100644 --- a/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp +++ b/src/BulletDynamics/Vehicle/btRaycastVehicle.cpp @@ -70,6 +70,7 @@ btWheelInfo& btRaycastVehicle::addWheel( const btVector3& connectionPointCS, con ci.m_frictionSlip = tuning.m_frictionSlip; ci.m_bIsFrontWheel = isFrontWheel; ci.m_maxSuspensionTravelCm = tuning.m_maxSuspensionTravelCm; + ci.m_maxSuspensionForce = tuning.m_maxSuspensionForce; m_wheelInfo.push_back( btWheelInfo(ci)); @@ -301,10 +302,9 @@ void btRaycastVehicle::updateVehicle( btScalar step ) btScalar suspensionForce = wheel.m_wheelsSuspensionForce; - btScalar gMaxSuspensionForce = btScalar(6000.); - if (suspensionForce > gMaxSuspensionForce) + if (suspensionForce > wheel.m_maxSuspensionForce) { - suspensionForce = gMaxSuspensionForce; + suspensionForce = wheel.m_maxSuspensionForce; } btVector3 impulse = wheel.m_raycastInfo.m_contactNormalWS * suspensionForce * step; btVector3 relpos = wheel.m_raycastInfo.m_contactPointWS - getRigidBody()->getCenterOfMassPosition(); diff --git a/src/BulletDynamics/Vehicle/btRaycastVehicle.h b/src/BulletDynamics/Vehicle/btRaycastVehicle.h index 4d17f5482..6ff8a9051 100644 --- a/src/BulletDynamics/Vehicle/btRaycastVehicle.h +++ b/src/BulletDynamics/Vehicle/btRaycastVehicle.h @@ -40,7 +40,8 @@ public: m_suspensionCompression(btScalar(0.83)), m_suspensionDamping(btScalar(0.88)), m_maxSuspensionTravelCm(btScalar(500.)), - m_frictionSlip(btScalar(10.5)) + m_frictionSlip(btScalar(10.5)), + m_maxSuspensionForce(btScalar(6000.)) { } btScalar m_suspensionStiffness; @@ -48,6 +49,7 @@ public: btScalar m_suspensionDamping; btScalar m_maxSuspensionTravelCm; btScalar m_frictionSlip; + btScalar m_maxSuspensionForce; }; private: diff --git a/src/BulletDynamics/Vehicle/btWheelInfo.h b/src/BulletDynamics/Vehicle/btWheelInfo.h index ac2729f4f..b74f8c80a 100644 --- a/src/BulletDynamics/Vehicle/btWheelInfo.h +++ b/src/BulletDynamics/Vehicle/btWheelInfo.h @@ -29,6 +29,7 @@ struct btWheelInfoConstructionInfo btScalar m_wheelsDampingCompression; btScalar m_wheelsDampingRelaxation; btScalar m_frictionSlip; + btScalar m_maxSuspensionForce; bool m_bIsFrontWheel; }; @@ -68,6 +69,7 @@ struct btWheelInfo btScalar m_rotation; btScalar m_deltaRotation; btScalar m_rollInfluence; + btScalar m_maxSuspensionForce; btScalar m_engineForce; @@ -99,6 +101,7 @@ struct btWheelInfo m_brake = btScalar(0.); m_rollInfluence = btScalar(0.1); m_bIsFrontWheel = ci.m_bIsFrontWheel; + m_maxSuspensionForce = ci.m_maxSuspensionForce; }