Files
Infratest/Assets/Code/Infrastructure/Camera/CameraStateMachine.cs
T
2026-01-20 20:38:20 +03:00

53 lines
1.4 KiB
C#

using System.Collections.Generic;
using Code.Infrastructure.EventBus;
using Code.Infrastructure.Input;
using Reflex.Attributes;
using UnityEngine.AddressableAssets;
namespace Code.Infrastructure.Camera
{
public enum CameraMode
{
None,
FirstPerson,
Static,
Cinematic
}
[Config("Configs/Camera/CameraConfig")]
public class GameCamera
{
[ToConfig] public AssetReference Camera;
}
public interface ICameraInitializedHandle : IGlobalSubscriber
{
void CameraInitialized(CameraStateMachineContext.CameraLoadedData data);
}
public class CameraStateMachineContext
{
public class CameraLoadedData
{
public UnityEngine.Camera Camera;
public Dictionary<CameraMode, CameraSettingsConfig> SettingsConfigs;
public CameraLoadedData(UnityEngine.Camera camera, Dictionary<CameraMode, CameraSettingsConfig> settingsConfigs)
{
Camera = camera;
SettingsConfigs = settingsConfigs;
}
}
public CameraLoadedData cameraLoadedData;
[Inject] public IInputService InputService;
[Inject] public EventBus.EventBus EventBus;
}
[global::StateMachine(typeof(CameraStateMachineContext), typeof(CameraMode))]
public partial class CameraStateMachine
{
public UnityEngine.Camera Camera => StateMachineContext.cameraLoadedData.Camera;
}
}