namespace Syntriax.Engine.Physics2D.Abstract;
///
/// Represents a 2D physics engine.
///
public interface IPhysicsEngine2D
{
///
/// Event triggered when the has done a single physics iteration.
///
event OnPhysicsIterationEventHandler? OnPhysicsIteration;
///
/// Event triggered when the has done a full physics step/>.
///
event OnPhysicsStepEventHandler? OnPhysicsStep;
///
/// The number of iterations the performs per step.
///
int IterationPerStep { get; set; }
///
/// Advances the physics simulation by the specified time.
///
/// The time step.
void Step(float deltaTime);
delegate void OnPhysicsIterationEventHandler(IPhysicsEngine2D sender, float iterationDeltaTime);
delegate void OnPhysicsStepEventHandler(IPhysicsEngine2D sender, float stepDeltaTime);
}