void SampleVehicle_VehicleManager::updateAndRecordTelemetryData (const PxF32 timestep, const PxVec3& gravity, PxVehicleWheels* focusVehicle, PxVehicleTelemetryData* telemetryData) { PX_ASSERT(focusVehicle && telemetryData); //Update the vehicle for which we want to record debug data. PxVehicleUpdateSingleVehicleAndStoreTelemetryData(timestep,gravity,*mSurfaceTirePairs,focusVehicle,*telemetryData); //Update the remaining vehicles. PxVehicleWheels* vehicles[MAX_NUM_4W_VEHICLES]; PxU32 numVehicles=0; for(PxU32 i=0;i<mNumVehicles;i++) { if(focusVehicle!=mVehicles[i]) { vehicles[numVehicles]=mVehicles[i]; numVehicles++; } } PxVehicleUpdates(timestep,gravity,*mSurfaceTirePairs,numVehicles,vehicles); }
void FPhysXVehicleManager::UpdateVehiclesWithTelemetry( float DeltaTime ) { check(TelemetryVehicle); check(PVehicles.Find(TelemetryVehicle) == 0); PxVehicleTelemetryData* TelemetryData = GetTelemetryData(); if ( TelemetryData ) { PxVehicleUpdateSingleVehicleAndStoreTelemetryData( DeltaTime, GetSceneGravity(), *SurfaceTirePairs, TelemetryVehicle, PVehiclesWheelsStates.GetData(), *TelemetryData ); if ( PVehicles.Num() > 1 ) { PxVehicleUpdates( DeltaTime, GetSceneGravity(), *SurfaceTirePairs, PVehicles.Num() - 1, &PVehicles[1], &PVehiclesWheelsStates[1] ); } } else { UE_LOG( LogPhysics, Warning, TEXT("Cannot record telemetry for vehicle, it does not have 4 wheels") ); PxVehicleUpdates( DeltaTime, GetSceneGravity(), *SurfaceTirePairs, PVehicles.Num(), PVehicles.GetData(), PVehiclesWheelsStates.GetData() ); } }