Development Merge 2025.10.18 #4
@@ -21,6 +21,12 @@ public class PhysicsEngine2DStandalone : IPhysicsEngine2D
 | 
			
		||||
    private readonly ICollisionResolver2D collisionResolver = null!;
 | 
			
		||||
    private readonly IRaycastResolver2D raycastResolver = null!;
 | 
			
		||||
 | 
			
		||||
    private readonly ListPool<ICollider2D> colliderPool = new(() => new(32));
 | 
			
		||||
    private readonly ListPool<IPrePhysicsUpdate> prePhysicsUpdatePool = new(() => new(32));
 | 
			
		||||
    private readonly ListPool<IPhysicsUpdate> physicsUpdatePool = new(() => new(32));
 | 
			
		||||
    private readonly ListPool<IPhysicsIteration> physicsIterationPool = new(() => new(32));
 | 
			
		||||
    private readonly ListPool<IPostPhysicsUpdate> postPhysicsUpdatePool = new(() => new(32));
 | 
			
		||||
 | 
			
		||||
    public int IterationPerStep { get => _iterationCount; set => _iterationCount = value < 1 ? 1 : value; }
 | 
			
		||||
 | 
			
		||||
    public void AddRigidBody(IRigidBody2D rigidBody)
 | 
			
		||||
@@ -112,11 +118,11 @@ public class PhysicsEngine2DStandalone : IPhysicsEngine2D
 | 
			
		||||
    {
 | 
			
		||||
        float intervalDeltaTime = deltaTime / IterationPerStep;
 | 
			
		||||
 | 
			
		||||
        List<ICollider2D> childColliders = [];
 | 
			
		||||
        List<IPrePhysicsUpdate> physicsPreUpdates = [];
 | 
			
		||||
        List<IPhysicsUpdate> physicsUpdates = [];
 | 
			
		||||
        List<IPhysicsIteration> physicsIterations = [];
 | 
			
		||||
        List<IPostPhysicsUpdate> physicsPostUpdates = [];
 | 
			
		||||
        List<ICollider2D> childColliders = colliderPool.Get();
 | 
			
		||||
        List<IPrePhysicsUpdate> physicsPreUpdates = prePhysicsUpdatePool.Get();
 | 
			
		||||
        List<IPhysicsUpdate> physicsUpdates = physicsUpdatePool.Get();
 | 
			
		||||
        List<IPhysicsIteration> physicsIterations = physicsIterationPool.Get();
 | 
			
		||||
        List<IPostPhysicsUpdate> physicsPostUpdates = postPhysicsUpdatePool.Get();
 | 
			
		||||
 | 
			
		||||
        rigidBody.BehaviourController.GetBehavioursInChildren(childColliders);
 | 
			
		||||
        rigidBody.BehaviourController.GetBehavioursInChildren(physicsPreUpdates);
 | 
			
		||||
@@ -160,6 +166,12 @@ public class PhysicsEngine2DStandalone : IPhysicsEngine2D
 | 
			
		||||
 | 
			
		||||
        for (int i = physicsPostUpdates.Count - 1; i >= 0; i--)
 | 
			
		||||
            physicsPostUpdates[i].PostPhysicsUpdate(deltaTime);
 | 
			
		||||
 | 
			
		||||
        colliderPool.Return(childColliders);
 | 
			
		||||
        prePhysicsUpdatePool.Return(physicsPreUpdates);
 | 
			
		||||
        physicsUpdatePool.Return(physicsUpdates);
 | 
			
		||||
        physicsIterationPool.Return(physicsIterations);
 | 
			
		||||
        postPhysicsUpdatePool.Return(physicsPostUpdates);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void ResolveColliders(ICollider2D colliderX, ICollider2D colliderY)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user