Expose vehicle maxSuspension force (instead of hard-coded 6000 value).

Thanks blakflow for the patch, see Issue 290
This commit is contained in:
erwin.coumans
2009-12-21 22:59:12 +00:00
parent 9fa2460933
commit b0e6e2f412
3 changed files with 9 additions and 4 deletions

View File

@@ -70,6 +70,7 @@ btWheelInfo& btRaycastVehicle::addWheel( const btVector3& connectionPointCS, con
ci.m_frictionSlip = tuning.m_frictionSlip; ci.m_frictionSlip = tuning.m_frictionSlip;
ci.m_bIsFrontWheel = isFrontWheel; ci.m_bIsFrontWheel = isFrontWheel;
ci.m_maxSuspensionTravelCm = tuning.m_maxSuspensionTravelCm; ci.m_maxSuspensionTravelCm = tuning.m_maxSuspensionTravelCm;
ci.m_maxSuspensionForce = tuning.m_maxSuspensionForce;
m_wheelInfo.push_back( btWheelInfo(ci)); m_wheelInfo.push_back( btWheelInfo(ci));
@@ -301,10 +302,9 @@ void btRaycastVehicle::updateVehicle( btScalar step )
btScalar suspensionForce = wheel.m_wheelsSuspensionForce; btScalar suspensionForce = wheel.m_wheelsSuspensionForce;
btScalar gMaxSuspensionForce = btScalar(6000.); if (suspensionForce > wheel.m_maxSuspensionForce)
if (suspensionForce > gMaxSuspensionForce)
{ {
suspensionForce = gMaxSuspensionForce; suspensionForce = wheel.m_maxSuspensionForce;
} }
btVector3 impulse = wheel.m_raycastInfo.m_contactNormalWS * suspensionForce * step; btVector3 impulse = wheel.m_raycastInfo.m_contactNormalWS * suspensionForce * step;
btVector3 relpos = wheel.m_raycastInfo.m_contactPointWS - getRigidBody()->getCenterOfMassPosition(); btVector3 relpos = wheel.m_raycastInfo.m_contactPointWS - getRigidBody()->getCenterOfMassPosition();

View File

@@ -40,7 +40,8 @@ public:
m_suspensionCompression(btScalar(0.83)), m_suspensionCompression(btScalar(0.83)),
m_suspensionDamping(btScalar(0.88)), m_suspensionDamping(btScalar(0.88)),
m_maxSuspensionTravelCm(btScalar(500.)), m_maxSuspensionTravelCm(btScalar(500.)),
m_frictionSlip(btScalar(10.5)) m_frictionSlip(btScalar(10.5)),
m_maxSuspensionForce(btScalar(6000.))
{ {
} }
btScalar m_suspensionStiffness; btScalar m_suspensionStiffness;
@@ -48,6 +49,7 @@ public:
btScalar m_suspensionDamping; btScalar m_suspensionDamping;
btScalar m_maxSuspensionTravelCm; btScalar m_maxSuspensionTravelCm;
btScalar m_frictionSlip; btScalar m_frictionSlip;
btScalar m_maxSuspensionForce;
}; };
private: private:

View File

@@ -29,6 +29,7 @@ struct btWheelInfoConstructionInfo
btScalar m_wheelsDampingCompression; btScalar m_wheelsDampingCompression;
btScalar m_wheelsDampingRelaxation; btScalar m_wheelsDampingRelaxation;
btScalar m_frictionSlip; btScalar m_frictionSlip;
btScalar m_maxSuspensionForce;
bool m_bIsFrontWheel; bool m_bIsFrontWheel;
}; };
@@ -68,6 +69,7 @@ struct btWheelInfo
btScalar m_rotation; btScalar m_rotation;
btScalar m_deltaRotation; btScalar m_deltaRotation;
btScalar m_rollInfluence; btScalar m_rollInfluence;
btScalar m_maxSuspensionForce;
btScalar m_engineForce; btScalar m_engineForce;
@@ -99,6 +101,7 @@ struct btWheelInfo
m_brake = btScalar(0.); m_brake = btScalar(0.);
m_rollInfluence = btScalar(0.1); m_rollInfluence = btScalar(0.1);
m_bIsFrontWheel = ci.m_bIsFrontWheel; m_bIsFrontWheel = ci.m_bIsFrontWheel;
m_maxSuspensionForce = ci.m_maxSuspensionForce;
} }