From 0ca60062d9d31dfe675f7459dc2cf97edae1e0d2 Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Tue, 28 Oct 2025 16:17:48 +0100 Subject: [PATCH] Fix crash on leftover physic contact collision processing --- Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp b/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp index 8d61e9ba5..18929ab73 100644 --- a/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp +++ b/Source/Engine/Physics/PhysX/PhysicsBackendPhysX.cpp @@ -1969,6 +1969,7 @@ void PhysicsBackend::EndSimulateScene(void* scene) scenePhysX->EventsCallback.SendTriggerEvents(); scenePhysX->EventsCallback.SendCollisionEvents(); scenePhysX->EventsCallback.SendJointEvents(); + scenePhysX->EventsCallback.Clear(); } // Clear delta after simulation ended @@ -4466,14 +4467,14 @@ void PhysicsBackend::FlushRequests(void* scene) } if (scenePhysX->RemoveColliders.HasItems()) { - for (int32 i = 0; i < scenePhysX->RemoveColliders.Count(); i++) - scenePhysX->EventsCallback.OnColliderRemoved(scenePhysX->RemoveColliders[i]); + for (PhysicsColliderActor* e : scenePhysX->RemoveColliders) + scenePhysX->EventsCallback.OnColliderRemoved(e); scenePhysX->RemoveColliders.Clear(); } if (scenePhysX->RemoveJoints.HasItems()) { - for (int32 i = 0; i < scenePhysX->RemoveJoints.Count(); i++) - scenePhysX->EventsCallback.OnJointRemoved(scenePhysX->RemoveJoints[i]); + for (Joint* e : scenePhysX->RemoveJoints) + scenePhysX->EventsCallback.OnJointRemoved(e); scenePhysX->RemoveJoints.Clear(); }