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() ); } }
void PhysXVehicle::Update( float delta ) { UpdateController(delta); //optimization: update all cars by one call. make sense? PxVehicleWheels* vehicles[1]; vehicles[0] = vehicleDrive; PxVehicleSuspensionRaycasts(sceneQueryData->batchQuery, 1, vehicles, wheelCount, sceneQueryData->raycastQueryResults); if(surfaceTirePairsUsedMaterialsVersion != world->vehicleDrivableMaterialsVersionCounter) { UpdateSurfaceTirePairs(); surfaceTirePairsUsedMaterialsVersion = world->vehicleDrivableMaterialsVersionCounter; } //Update the vehicle for which we want to record debug data. //PxVehicleUpdateSingleVehicleAndStoreTelemetryData(delta, scene->mScene->getGravity(), *mSurfaceTirePairs, // vehicleDrive, *telemetryData); PxVehicleUpdates(delta, scene->mScene->getGravity(), *surfaceTirePairs, 1, vehicles); }
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 SampleVehicle_VehicleManager::update(const PxF32 timestep, const PxVec3& gravity) { //Update. PxVehicleUpdates(timestep,gravity,*mSurfaceTirePairs,mNumVehicles,mVehicles); }
void FPhysXVehicleManager::UpdateVehicles( float DeltaTime ) { PxVehicleUpdates( DeltaTime, GetSceneGravity(), *SurfaceTirePairs, PVehicles.Num(), PVehicles.GetData(), PVehiclesWheelsStates.GetData()); }