Syntriax.Engine/Engine.Physics2D/Abstract/IPhysicsEngine2D.cs

32 lines
1.1 KiB
C#
Raw Normal View History

namespace Syntriax.Engine.Physics2D.Abstract;
2024-02-01 12:26:28 +03:00
/// <summary>
/// Represents a 2D physics engine.
/// </summary>
public interface IPhysicsEngine2D
{
2024-10-25 23:10:32 +03:00
/// <summary>
/// Event triggered when the <see cref="IPhysicsEngine2D"/> has done a single physics iteration.
/// </summary>
event OnPhysicsIterationEventHandler? OnPhysicsIteration;
2024-10-25 23:10:32 +03:00
/// <summary>
/// Event triggered when the <see cref="IPhysicsEngine2D"/> has done a full physics step/>.
/// </summary>
event OnPhysicsStepEventHandler? OnPhysicsStep;
2024-10-25 23:10:32 +03:00
2024-02-01 12:26:28 +03:00
/// <summary>
/// The number of iterations the <see cref="IPhysicsEngine2D"/> performs per step.
/// </summary>
int IterationPerStep { get; set; }
2024-02-01 12:26:28 +03:00
/// <summary>
/// Advances the physics simulation by the specified time.
/// </summary>
/// <param name="deltaTime">The time step.</param>
void Step(float deltaTime);
2024-10-25 23:10:32 +03:00
delegate void OnPhysicsIterationEventHandler(IPhysicsEngine2D sender, float iterationDeltaTime);
delegate void OnPhysicsStepEventHandler(IPhysicsEngine2D sender, float stepDeltaTime);
}