diff --git a/src/AcDream.App/Rendering/CameraController.cs b/src/AcDream.App/Rendering/CameraController.cs index 97ff925..c061450 100644 --- a/src/AcDream.App/Rendering/CameraController.cs +++ b/src/AcDream.App/Rendering/CameraController.cs @@ -5,8 +5,10 @@ public sealed class CameraController { public OrbitCamera Orbit { get; } public FlyCamera Fly { get; } + public ChaseCamera? Chase { get; private set; } public ICamera Active { get; private set; } public bool IsFlyMode => Active == Fly; + public bool IsChaseMode => Chase is not null && Active == Chase; public event Action? ModeChanged; @@ -23,6 +25,20 @@ public sealed class CameraController ModeChanged?.Invoke(IsFlyMode); } + public void EnterChaseMode(ChaseCamera chase) + { + Chase = chase; + Active = chase; + ModeChanged?.Invoke(IsChaseMode); + } + + public void ExitChaseMode() + { + Active = Fly; + Chase = null; + ModeChanged?.Invoke(IsFlyMode); + } + public void SetAspect(float aspect) { Orbit.Aspect = aspect;