00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef PX_VEHICLE_UTILSSETUP_H
00031 #define PX_VEHICLE_UTILSSETUP_H
00032
00035 #include "foundation/PxSimpleTypes.h"
00036 #include "vehicle/PxVehicleSDK.h"
00037
00038 #if !PX_DOXYGEN
00039 namespace physx
00040 {
00041 #endif
00042
00043 class PxVehicleWheelsSimData;
00044 class PxVehicleWheelsDynData;
00045 class PxVehicleDriveSimData4W;
00046 class PxVehicleWheels;
00047
00048
00059 void PxVehicle4WEnable3WTadpoleMode(PxVehicleWheelsSimData& wheelsSimData, PxVehicleWheelsDynData& wheelsDynData, PxVehicleDriveSimData4W& driveSimData);
00060
00071 void PxVehicle4WEnable3WDeltaMode(PxVehicleWheelsSimData& wheelsSimData, PxVehicleWheelsDynData& wheelsDynData, PxVehicleDriveSimData4W& driveSimData);
00072
00090 void PxVehicleComputeSprungMasses(const PxU32 nbSprungMasses, const PxVec3* sprungMassCoordinates, const PxVec3& centreOfMass, const PxReal totalMass, const PxU32 gravityDirection, PxReal* sprungMasses);
00091
00092
00109 void PxVehicleUpdateCMassLocalPose(const PxTransform& oldCMassLocalPose, const PxTransform& newCMassLocalPose, const PxU32 gravityDirection, PxVehicleWheels* vehicle);
00110
00115 class PxVehicleCopyDynamicsMap
00116 {
00117 public:
00118
00119 PxVehicleCopyDynamicsMap()
00120 {
00121 for(PxU32 i = 0; i < PX_MAX_NB_WHEELS; i++)
00122 {
00123 sourceWheelIds[i] = PX_MAX_U8;
00124 targetWheelIds[i] = PX_MAX_U8;
00125 }
00126 }
00127
00128 PxU8 sourceWheelIds[PX_MAX_NB_WHEELS];
00129 PxU8 targetWheelIds[PX_MAX_NB_WHEELS];
00130 };
00131
00152 void PxVehicleCopyDynamicsData(const PxVehicleCopyDynamicsMap& wheelMap, const PxVehicleWheels& src, PxVehicleWheels* trg);
00153
00154
00155 #if !PX_DOXYGEN
00156 }
00157 #endif
00158
00160 #endif //PX_VEHICLE_UTILSSETUP_H