Fix vehicles simulation instability when physics substepping is enabled

#2796
This commit is contained in:
Wojtek Figat
2024-07-25 14:19:01 +02:00
parent ab7de52531
commit 2a1706decb
3 changed files with 21 additions and 6 deletions

View File

@@ -1606,6 +1606,24 @@ PxMaterial* PhysicsBackendPhysX::GetDefaultMaterial()
return DefaultMaterial;
}
void PhysicsBackendPhysX::SimulationStepDone(PxScene* scene, float dt)
{
#if WITH_VEHICLE
ScenePhysX* scenePhysX = nullptr;
for (auto e : Physics::Scenes)
{
if (((ScenePhysX*)e->GetPhysicsScene())->Scene == scene)
{
scenePhysX = (ScenePhysX*)e->GetPhysicsScene();
break;
}
}
if (!scenePhysX)
return;
scenePhysX->UpdateVehicles(dt);
#endif
}
bool PhysicsBackend::Init()
{
#define CHECK_INIT(value, msg) if (!value) { LOG(Error, msg); return true; }
@@ -1895,10 +1913,6 @@ void PhysicsBackend::EndSimulateScene(void* scene)
scenePhysX->Stepper.wait(scenePhysX->Scene);
}
#if WITH_VEHICLE
scenePhysX->UpdateVehicles(scenePhysX->LastDeltaTime);
#endif
{
PROFILE_CPU_NAMED("Physics.FlushActiveTransforms");