feat: IPhysicsIteration interface added

This commit is contained in:
2025-06-05 23:17:17 +03:00
parent c7f63dc638
commit f5fbd4e5ef
3 changed files with 43 additions and 14 deletions

View File

@@ -86,25 +86,30 @@ public class PhysicsEngine2DStandalone : IPhysicsEngine2D
List<ICollider2D> childColliders = [];
List<IPrePhysicsUpdate> physicsPreUpdates = [];
List<IPhysicsUpdate> physicsUpdates = [];
List<IPhysicsIteration> physicsIterations = [];
List<IPostPhysicsUpdate> physicsPostUpdates = [];
rigidBody.BehaviourController.GetBehavioursInChildren(childColliders);
rigidBody.BehaviourController.GetBehavioursInChildren(physicsPreUpdates);
rigidBody.BehaviourController.GetBehavioursInChildren(physicsUpdates);
rigidBody.BehaviourController.GetBehavioursInChildren(physicsIterations);
rigidBody.BehaviourController.GetBehavioursInChildren(physicsPostUpdates);
foreach (IPrePhysicsUpdate physicsPreUpdate in physicsPreUpdates)
physicsPreUpdate.PrePhysicsUpdate(deltaTime);
for (int i = physicsPreUpdates.Count - 1; i >= 0; i--)
physicsPreUpdates[i].PrePhysicsUpdate(deltaTime);
foreach (IPhysicsUpdate physicsUpdate in physicsUpdates)
physicsUpdate.PhysicsUpdate(deltaTime);
for (int i = physicsUpdates.Count - 1; i >= 0; i--)
physicsUpdates[i].PhysicsUpdate(deltaTime);
for (int iterationIndex = 0; iterationIndex < IterationPerStep; iterationIndex++)
{
for (int i = physicsIterations.Count - 1; i >= 0; i--)
physicsIterations[i].PhysicsIterate(intervalDeltaTime);
StepRigidBody(rigidBody, intervalDeltaTime);
foreach (ICollider2D collider in childColliders)
collider.Recalculate();
for (int i = childColliders.Count - 1; i >= 0; i--)
childColliders[i].Recalculate();
for (int x = 0; x < childColliders.Count; x++)
{
@@ -124,8 +129,8 @@ public class PhysicsEngine2DStandalone : IPhysicsEngine2D
}
}
foreach (IPostPhysicsUpdate physicsPostUpdate in physicsPostUpdates)
physicsPostUpdate.PostPhysicsUpdate(deltaTime);
for (int i = physicsPostUpdates.Count - 1; i >= 0; i--)
physicsPostUpdates[i].PostPhysicsUpdate(deltaTime);
}
private void ResolveColliders(ICollider2D colliderX, ICollider2D colliderY)