perf: physics engine memory leaks fixed
This commit is contained in:
parent
bf8fbebae3
commit
9bf17cc191
@ -28,21 +28,21 @@ public class PhysicsEngine2D : UniverseObject, IPhysicsEngine2D
|
|||||||
{
|
{
|
||||||
float intervalDeltaTime = deltaTime / IterationPerStep;
|
float intervalDeltaTime = deltaTime / IterationPerStep;
|
||||||
|
|
||||||
foreach (IPrePhysicsUpdate physicsPreUpdate in physicsPreUpdateCollector)
|
for (int i = physicsPreUpdateCollector.Behaviours.Count - 1; i >= 0; i--)
|
||||||
physicsPreUpdate.PrePhysicsUpdate(deltaTime);
|
physicsPreUpdateCollector.Behaviours[i].PrePhysicsUpdate(deltaTime);
|
||||||
|
|
||||||
foreach (IPhysicsUpdate physicsUpdate in physicsUpdateCollector)
|
for (int i = physicsUpdateCollector.Behaviours.Count - 1; i >= 0; i--)
|
||||||
physicsUpdate.PhysicsUpdate(deltaTime);
|
physicsUpdateCollector.Behaviours[i].PhysicsUpdate(deltaTime);
|
||||||
|
|
||||||
for (int iterationIndex = 0; iterationIndex < IterationPerStep; iterationIndex++)
|
for (int iterationIndex = 0; iterationIndex < IterationPerStep; iterationIndex++)
|
||||||
{
|
{
|
||||||
// Can Parallel
|
// Can Parallel
|
||||||
foreach (IRigidBody2D rigidBody in rigidBodyCollector)
|
for (int i = rigidBodyCollector.Behaviours.Count - 1; i >= 0; i--)
|
||||||
StepRigidBody(rigidBody, intervalDeltaTime);
|
StepRigidBody(rigidBodyCollector.Behaviours[i], intervalDeltaTime);
|
||||||
|
|
||||||
// Can Parallel
|
// Can Parallel
|
||||||
foreach (ICollider2D collider in colliderCollector)
|
for (int i = colliderCollector.Behaviours.Count - 1; i >= 0; i--)
|
||||||
collider.Recalculate();
|
colliderCollector.Behaviours[i].Recalculate();
|
||||||
|
|
||||||
// Can Parallel
|
// Can Parallel
|
||||||
for (int x = 0; x < colliderCollector.Behaviours.Count; x++)
|
for (int x = 0; x < colliderCollector.Behaviours.Count; x++)
|
||||||
@ -65,8 +65,8 @@ public class PhysicsEngine2D : UniverseObject, IPhysicsEngine2D
|
|||||||
OnPhysicsIteration?.Invoke(this, intervalDeltaTime);
|
OnPhysicsIteration?.Invoke(this, intervalDeltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (IPostPhysicsUpdate physicsPostUpdate in physicsPostUpdateCollector)
|
for (int i = physicsPostUpdateCollector.Behaviours.Count - 1; i >= 0; i--)
|
||||||
physicsPostUpdate.PostPhysicsUpdate(deltaTime);
|
physicsPostUpdateCollector.Behaviours[i].PostPhysicsUpdate(deltaTime);
|
||||||
|
|
||||||
OnPhysicsStep?.Invoke(this, deltaTime);
|
OnPhysicsStep?.Invoke(this, deltaTime);
|
||||||
}
|
}
|
||||||
@ -95,8 +95,8 @@ public class PhysicsEngine2D : UniverseObject, IPhysicsEngine2D
|
|||||||
{
|
{
|
||||||
StepRigidBody(rigidBody, intervalDeltaTime);
|
StepRigidBody(rigidBody, intervalDeltaTime);
|
||||||
|
|
||||||
foreach (ICollider2D collider in childColliders)
|
for (int i = childColliders.Count - 1; i >= 0; i--)
|
||||||
collider.Recalculate();
|
childColliders[i].Recalculate();
|
||||||
|
|
||||||
for (int x = 0; x < childColliders.Count; x++)
|
for (int x = 0; x < childColliders.Count; x++)
|
||||||
{
|
{
|
||||||
|
@ -45,12 +45,12 @@ public class PhysicsEngine2DStandalone : IPhysicsEngine2D
|
|||||||
for (int iterationIndex = 0; iterationIndex < IterationPerStep; iterationIndex++)
|
for (int iterationIndex = 0; iterationIndex < IterationPerStep; iterationIndex++)
|
||||||
{
|
{
|
||||||
// Can Parallel
|
// Can Parallel
|
||||||
for (int i = 0; i < rigidBodies.Count; i++)
|
for (int i = rigidBodies.Count - 1; i >= 0; i--)
|
||||||
StepRigidBody(rigidBodies[i], intervalDeltaTime);
|
StepRigidBody(rigidBodies[i], intervalDeltaTime);
|
||||||
|
|
||||||
// Can Parallel
|
// Can Parallel
|
||||||
foreach (ICollider2D collider in colliders)
|
for (int i = colliders.Count - 1; i >= 0; i--)
|
||||||
collider.Recalculate();
|
colliders[i].Recalculate();
|
||||||
|
|
||||||
// Can Parallel
|
// Can Parallel
|
||||||
for (int x = 0; x < colliders.Count; x++)
|
for (int x = 0; x < colliders.Count; x++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user