51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using System.Collections.Generic;
|
|
using Code.Infrastructure.EventBus;
|
|
using Code.Infrastructure.Generators;
|
|
using Code.Infrastructure.Input;
|
|
using Reflex.Attributes;
|
|
using UnityEngine.AddressableAssets;
|
|
|
|
namespace Code.Infrastructure.Camera
|
|
{
|
|
public enum CameraMode
|
|
{
|
|
None,
|
|
ThirdPerson
|
|
}
|
|
|
|
[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;
|
|
}
|
|
|
|
[Generators.StateMachine(typeof(CameraStateMachineContext), typeof(CameraMode))]
|
|
public partial class CameraStateMachine
|
|
{
|
|
public UnityEngine.Camera Camera => StateMachineContext.cameraLoadedData.Camera;
|
|
}
|
|
} |