namespace Syntriax.Engine.Core.Abstract;

/// <summary>
/// Represents a 2D camera in the engine.
/// </summary>
public interface ICamera2D : IBehaviour2D
{
    /// <summary>
    /// The zoom level of the camera.
    /// </summary>
    float Zoom { get; set; }

    /// <summary>
    /// Converts a position from screen coordinates to world coordinates.
    /// </summary>
    /// <param name="screenPosition">The position in screen coordinates.</param>
    /// <returns>The position in world coordinates.</returns>
    Vector2D ScreenToWorldPosition(Vector2D screenPosition);

    /// <summary>
    /// Converts a position from world coordinates to screen coordinates.
    /// </summary>
    /// <param name="worldPosition">The position in world coordinates.</param>
    /// <returns>The position in screen coordinates.</returns>
    Vector2D WorldToScreenPosition(Vector2D worldPosition);
}