22 #ifndef __ND_MULTIBODY_VEHICLE_H__
23 #define __ND_MULTIBODY_VEHICLE_H__
25 #include "ndNewtonStdafx.h"
27 #include "ndIkSolver.h"
38 #define dRadPerSecToRpm ndFloat32(9.55f)
57 ndFloat32 m_forceFactor;
58 ndFloat32 m_aerodynamicDownforceConstant;
63 ndFloat32 GetDownforceFactor(ndFloat32 speed)
const;
72 ndFloat32 m_suspensionStiffnessModifier;
83 D_NEWTON_API ndFloat32 GetSpeed()
const;
84 D_NEWTON_API
ndShapeInstance CreateTireShape(ndFloat32 radius, ndFloat32 width)
const;
95 D_NEWTON_API
void SetVehicleSolverModel(
bool hardJoint);
100 void ApplyAerodynamics();
101 void ApplyAligmentAndBalancing();
102 void ApplyTireModel(ndFloat32 timestep);
103 ndBodyKinematic* CreateInternalBodyPart(ndFloat32 mass, ndFloat32 radius)
const;
104 void ApplyTireModel(ndFloat32 timestep,
ndTireContactPair*
const tires, ndInt32 tireCount);
105 void ApplyVehicleDynamicControl(ndFloat32 timestep,
ndTireContactPair*
const tires, ndInt32 tireCount);
114 bool isActive()
const;
115 virtual void ApplyInputs(
ndWorld*
const world, ndFloat32 timestep);
116 D_NEWTON_API
virtual void RemoveFromToWorld();
117 D_NEWTON_API
virtual void AddToWorld(
ndWorld*
const world);
119 D_NEWTON_API
virtual void Update(
ndWorld*
const world, ndFloat32 timestep);
120 D_NEWTON_API
virtual void PostUpdate(
ndWorld*
const world, ndFloat32 timestep);
142 inline void ndMultiBodyVehicle::ApplyInputs(
ndWorld*
const, ndFloat32)