exposed a few more tuning paramters

This commit is contained in:
Erwin Coumans 2006-02-21 07:08:23 +00:00
parent e4d8bd5984
commit e3b840d086
6 changed files with 160 additions and 3 deletions

@ -587,7 +587,7 @@ void RaycastVehicle::UpdateFriction(SimdScalar timeStep)
SimdVector3 sideImp = axle[wheel] * sideImpulse[wheel];
rel_pos[2] *= 0.1;
rel_pos[2] *= wheelInfo.m_rollInfluence;
m_chassisBody->applyImpulse(sideImp,rel_pos);
//apply friction impulse on the ground

@ -67,6 +67,7 @@ struct WheelInfo
SimdScalar m_steering;
SimdScalar m_rotation;
SimdScalar m_deltaRotation;
SimdScalar m_rollInfluence;
SimdScalar m_engineForce;
@ -96,6 +97,7 @@ struct WheelInfo
m_rotation = 0.f;
m_deltaRotation = 0.f;
m_brake = 0.f;
m_rollInfluence = 0.1f;
m_bIsFrontWheel = ci.m_bIsFrontWheel;
}

@ -158,6 +158,81 @@ PyObject* KX_VehicleWrapper::PyApplyEngineForce(PyObject* self,
return Py_None;
}
PyObject* KX_VehicleWrapper::PySetTyreFriction(PyObject* self,
PyObject* args,
PyObject* kwds)
{
float wheelFriction;
int wheelIndex;
if (PyArg_ParseTuple(args,"fi",&wheelFriction,&wheelIndex))
{
m_vehicle->SetWheelFriction(wheelFriction,wheelIndex);
}
Py_INCREF(Py_None);
return Py_None;
}
PyObject* KX_VehicleWrapper::PySetSuspensionStiffness(PyObject* self,
PyObject* args,
PyObject* kwds)
{
float suspensionStiffness;
int wheelIndex;
if (PyArg_ParseTuple(args,"fi",&suspensionStiffness,&wheelIndex))
{
m_vehicle->SetSuspensionStiffness(suspensionStiffness,wheelIndex);
}
Py_INCREF(Py_None);
return Py_None;
}
PyObject* KX_VehicleWrapper::PySetSuspensionDamping(PyObject* self,
PyObject* args,
PyObject* kwds)
{
float suspensionDamping;
int wheelIndex;
if (PyArg_ParseTuple(args,"fi",&suspensionDamping,&wheelIndex))
{
m_vehicle->SetSuspensionDamping(suspensionDamping,wheelIndex);
}
Py_INCREF(Py_None);
return Py_None;
}
PyObject* KX_VehicleWrapper::PySetSuspensionCompression(PyObject* self,
PyObject* args,
PyObject* kwds)
{
float suspensionCompression;
int wheelIndex;
if (PyArg_ParseTuple(args,"fi",&suspensionCompression,&wheelIndex))
{
m_vehicle->SetSuspensionCompression(suspensionCompression,wheelIndex);
}
Py_INCREF(Py_None);
return Py_None;
}
PyObject* KX_VehicleWrapper::PySetRollInfluence(PyObject* self,
PyObject* args,
PyObject* kwds)
{
float rollInfluence;
int wheelIndex;
if (PyArg_ParseTuple(args,"fi",&rollInfluence,&wheelIndex))
{
m_vehicle->SetRollInfluence(rollInfluence,wheelIndex);
}
Py_INCREF(Py_None);
return Py_None;
}
PyObject* KX_VehicleWrapper::PyApplyBraking(PyObject* self,
PyObject* args,
@ -275,8 +350,17 @@ PyMethodDef KX_VehicleWrapper::Methods[] = {
{"setSteeringValue",(PyCFunction) KX_VehicleWrapper::sPySetSteeringValue, METH_VARARGS},
{"applyEngineForce",(PyCFunction) KX_VehicleWrapper::sPyApplyEngineForce, METH_VARARGS},
{"applyBraking",(PyCFunction) KX_VehicleWrapper::sPyApplyBraking, METH_VARARGS},
{"setTyreFriction",(PyCFunction) KX_VehicleWrapper::sPySetTyreFriction, METH_VARARGS},
{"setSuspensionStiffness",(PyCFunction) KX_VehicleWrapper::sPySetSuspensionStiffness, METH_VARARGS},
{"setSuspensionDamping",(PyCFunction) KX_VehicleWrapper::sPySetSuspensionDamping, METH_VARARGS},
{"setSuspensionCompression",(PyCFunction) KX_VehicleWrapper::sPySetSuspensionCompression, METH_VARARGS},
{"setRollInfluence",(PyCFunction) KX_VehicleWrapper::sPySetRollInfluence, METH_VARARGS},
{NULL,NULL} //Sentinel
};

@ -39,7 +39,16 @@ public:
KX_PYMETHOD(KX_VehicleWrapper,ApplyBraking);
KX_PYMETHOD(KX_VehicleWrapper,SetTyreFriction);
KX_PYMETHOD(KX_VehicleWrapper,SetSuspensionStiffness);
KX_PYMETHOD(KX_VehicleWrapper,SetSuspensionDamping);
KX_PYMETHOD(KX_VehicleWrapper,SetSuspensionCompression);
KX_PYMETHOD(KX_VehicleWrapper,SetRollInfluence);
private:
PHY_IVehicle* m_vehicle;

@ -197,6 +197,57 @@ public:
}
}
virtual void SetWheelFriction(float friction,int wheelIndex)
{
if ((wheelIndex>=0) && (wheelIndex< m_vehicle->GetNumWheels()))
{
WheelInfo& info = m_vehicle->GetWheelInfo(wheelIndex);
info.m_frictionSlip = friction;
}
}
virtual void SetSuspensionStiffness(float suspensionStiffness,int wheelIndex)
{
if ((wheelIndex>=0) && (wheelIndex< m_vehicle->GetNumWheels()))
{
WheelInfo& info = m_vehicle->GetWheelInfo(wheelIndex);
info.m_suspensionStiffness = suspensionStiffness;
}
}
virtual void SetSuspensionDamping(float suspensionDamping,int wheelIndex)
{
if ((wheelIndex>=0) && (wheelIndex< m_vehicle->GetNumWheels()))
{
WheelInfo& info = m_vehicle->GetWheelInfo(wheelIndex);
info.m_wheelsDampingRelaxation = suspensionDamping;
}
}
virtual void SetSuspensionCompression(float suspensionCompression,int wheelIndex)
{
if ((wheelIndex>=0) && (wheelIndex< m_vehicle->GetNumWheels()))
{
WheelInfo& info = m_vehicle->GetWheelInfo(wheelIndex);
info.m_wheelsDampingCompression = suspensionCompression;
}
}
virtual void SetRollInfluence(float rollInfluence,int wheelIndex)
{
if ((wheelIndex>=0) && (wheelIndex< m_vehicle->GetNumWheels()))
{
WheelInfo& info = m_vehicle->GetWheelInfo(wheelIndex);
info.m_rollInfluence = rollInfluence;
}
}
};
#endif //NEW_BULLET_VEHICLE_SUPPORT

@ -40,6 +40,17 @@ public:
virtual void ApplyBraking(float braking,int wheelIndex) = 0;
virtual void SetWheelFriction(float friction,int wheelIndex) = 0;
virtual void SetSuspensionStiffness(float suspensionStiffness,int wheelIndex) = 0;
virtual void SetSuspensionDamping(float suspensionStiffness,int wheelIndex) = 0;
virtual void SetSuspensionCompression(float suspensionStiffness,int wheelIndex) = 0;
virtual void SetRollInfluence(float rollInfluence,int wheelIndex) = 0;
};
#endif //PHY_IVEHICLE_H