using System.Drawing; using gaemstone.ECS; namespace gaemstone.Client.Components; [Module] public class CameraComponents { [Component] public struct Camera { public static readonly Camera Default2D = Create2D(); public static readonly Camera Default3D = Create3D(80.0f); public static Camera Create2D(float nearPlane = -100.0f, float farPlane = 100.0f) => new() { NearPlane = nearPlane, FarPlane = farPlane }; public static Camera Create3D(float fieldOfView, float nearPlane = 0.1f, float farPlane = 200.0f) => new() { FieldOfView = fieldOfView, NearPlane = nearPlane, FarPlane = farPlane }; public float FieldOfView { get; set; } public float NearPlane { get; set; } public float FarPlane { get; set; } public bool IsOrthographic => (FieldOfView == 0.0f); } [Component] public struct CameraViewport { public Color ClearColor { get; set; } public Rectangle Viewport { get; set; } } }