using Code.Infrastructure.StateMachine; using UnityEngine; namespace Code.Infrastructure.Camera.CameraStates { // [State(typeof(CameraMode),typeof(CameraStateMachineContext))] public abstract class BaseCameraState : BaseState { protected EventBus.EventBus EventBus; protected BaseCameraState(CameraStateMachineContext context, EventBus.EventBus eventBus) : base(context, eventBus) { EventBus = eventBus; } // Основной метод обновления камеры, вызываемый извне каждый кадр protected void UpdateWithInput(float deltaTime, Vector3 rotationInput) { // Обработка ввода и позиционирования HandleRotationInput(deltaTime, rotationInput, out var targetRotation); HandlePosition(deltaTime , targetRotation); } protected abstract void HandlePosition(float deltaTime, object o); protected abstract void HandleRotationInput(float deltaTime, Vector3 rotationInput, out Quaternion q); public abstract void Update(); public abstract void LateUpdate(); } }