using Code.Infrastructure.Camera.CameraStates; using Code.Infrastructure.Input; using Reflex.Attributes; namespace Code.Infrastructure.Camera { public enum CameraMode { None, OpenMovement, LocationTransition } public class CameraStateMachineContext { public class CameraLoadedData { public UnityEngine.Camera Camera; public CameraLoadedData(UnityEngine.Camera camera) { Camera = camera; } } public CameraLoadedData cameraLoadedData; [Inject] public IInputService InputService; } [Generators.StateMachine(typeof(CameraStateMachineContext), typeof(CameraMode))] public partial class CameraStateMachine { public UnityEngine.Camera Camera => StateMachineContext.cameraLoadedData.Camera; public void Update() => ((BaseCameraState)CurrentBaseState).Update(); public void LateUpdate() => ((BaseCameraState)CurrentBaseState).LateUpdate(); } }