diff --git a/Engine.Physics2D/Abstract/ICollider2D.cs b/Engine.Physics2D/Abstract/ICollider2D.cs index 7d652dd..5d03006 100644 --- a/Engine.Physics2D/Abstract/ICollider2D.cs +++ b/Engine.Physics2D/Abstract/ICollider2D.cs @@ -6,8 +6,8 @@ namespace Syntriax.Engine.Physics2D.Abstract; public interface ICollider2D : IBehaviour, IAssignableTransform { - Action? OnCollisionPreResolve { get; set; } - Action? OnCollisionResolved { get; set; } + Action? OnCollisionPreResolve { get; set; } + Action? OnCollisionResolved { get; set; } IRigidBody2D? RigidBody2D { get; } diff --git a/Engine.Physics2D/PhysicsEngine2D.cs b/Engine.Physics2D/PhysicsEngine2D.cs index 3be4953..d7fc89d 100644 --- a/Engine.Physics2D/PhysicsEngine2D.cs +++ b/Engine.Physics2D/PhysicsEngine2D.cs @@ -62,6 +62,9 @@ public class PhysicsEngine2D : IPhysicsEngine2D if (collisionDetector.TryDetect(colliderX, colliderY, out CollisionDetectionInformation information)) { + colliderX.OnCollisionPreResolve?.Invoke(colliderX, information); + colliderY.OnCollisionPreResolve?.Invoke(colliderY, information); + Vector2D displacementVector = information.Normal * information.Penetration; @@ -89,6 +92,9 @@ public class PhysicsEngine2D : IPhysicsEngine2D information.Left.Recalculate(); information.Right.Recalculate(); + + colliderX.OnCollisionResolved?.Invoke(colliderX, information); + colliderY.OnCollisionResolved?.Invoke(colliderY, information); } } }