using Syntriax.Engine.Core; namespace Syntriax.Engine.Physics2D; /// /// Represents a 2D collider. /// public interface ICollider2D : IBehaviour { /// /// Event triggered when a collision is detected. /// Event OnCollisionDetected { get; } /// /// Event triggered when a collision is resolved. /// Event OnCollisionResolved { get; } /// /// Event triggered when another triggers this . /// Event OnTriggered { get; } /// ITransform2D Transform { get; } /// /// The associated with the . /// IRigidBody2D? RigidBody2D { get; } /// /// The value indicating whether the is a trigger. /// bool IsTrigger { get; set; } /// /// Recalculates properties. /// void Recalculate(); void Detect(CollisionDetectionInformation collisionDetectionInformation); void Resolve(CollisionDetectionInformation collisionDetectionInformation); void Trigger(ICollider2D initiator); readonly record struct CollisionDetectedArguments(ICollider2D sender, CollisionDetectionInformation collisionDetectionInformation); readonly record struct CollisionResolvedArguments(ICollider2D sender, CollisionDetectionInformation collisionDetectionInformation); readonly record struct TriggeredArguments(ICollider2D sender, ICollider2D initiatorCollider); }