Fix vehicles simulation instability when physics substepping is enabled
#2796
This commit is contained in:
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user