Browse Source

Swapping step listener with last step listener so we don't remove a listener from the middle of the array (#476)

Jorrit Rouwe 2 years ago
parent
commit
ac0b9bcb47
1 changed files with 2 additions and 1 deletions
  1. 2 1
      Jolt/Physics/PhysicsSystem.cpp

+ 2 - 1
Jolt/Physics/PhysicsSystem.cpp

@@ -111,7 +111,8 @@ void PhysicsSystem::RemoveStepListener(PhysicsStepListener *inListener)
 
 
 	StepListeners::iterator i = find(mStepListeners.begin(), mStepListeners.end(), inListener);
 	StepListeners::iterator i = find(mStepListeners.begin(), mStepListeners.end(), inListener);
 	JPH_ASSERT(i != mStepListeners.end());
 	JPH_ASSERT(i != mStepListeners.end());
-	mStepListeners.erase(i);
+	*i = mStepListeners.back();
+	mStepListeners.pop_back();
 }
 }
 
 
 void PhysicsSystem::Update(float inDeltaTime, int inCollisionSteps, int inIntegrationSubSteps, TempAllocator *inTempAllocator, JobSystem *inJobSystem)
 void PhysicsSystem::Update(float inDeltaTime, int inCollisionSteps, int inIntegrationSubSteps, TempAllocator *inTempAllocator, JobSystem *inJobSystem)