using System.Numerics; namespace Engine.Render.Contracts; /// /// The one camera engine.render draws through — read for gizmo/ray-picking /// math (editor.shell needs View/Projection to turn a 2D mouse position /// into a 3D ray), settable for camera controls (orbit, fly) that don't /// exist yet. Not a Component/GameObject-driven multi-camera system — /// there's exactly one camera and nothing needs more than that yet; see /// the note on RenderPlugin for why that's a deliberate scope line, not /// an oversight. /// public interface ICameraService { Vector3 Position { get; set; } Vector3 Target { get; set; } Matrix4x4 View { get; } /// Recomputed against the window's current size on every /// read — a cached value would go stale the moment the window /// resizes. Matrix4x4 Projection { get; } }