Second commit
This commit is contained in:
commit
36840f3ad4
999 files changed
+61364
No files matched your search
@@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using Code.Infrastructure.Configs;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Unity.VisualScripting;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
using UnityEngine.Rendering.Universal;
|
||||
using UnityEngine.ResourceManagement.AsyncOperations;
|
||||
using Object = UnityEngine.Object;
|
||||
|
||||
namespace Code.Infrastructure.Camera
|
||||
{
|
||||
public interface ICameraFactory
|
||||
{
|
||||
UniTask<CameraStateMachineContext.CameraLoadedData> CreateCameraStateMachine();
|
||||
void CreateCameraStateMachineRunner(CameraStateMachine cameraStateMachine);
|
||||
}
|
||||
|
||||
public class CameraFactory : IDisposable, ICameraFactory
|
||||
{
|
||||
private AsyncOperationHandle<GameCamera> _configHandle;
|
||||
private GameCamera _config;
|
||||
private AssetReference _gameCameraConfigReference;
|
||||
|
||||
private UnityEngine.Camera _camera;
|
||||
|
||||
public CameraFactory(IConfigLocator configLocator)
|
||||
{
|
||||
_gameCameraConfigReference = configLocator.TryGetConfigAssetReference<GameCamera>();
|
||||
}
|
||||
|
||||
public async UniTask<CameraStateMachineContext.CameraLoadedData> CreateCameraStateMachine()
|
||||
{
|
||||
_configHandle = Addressables.LoadAssetAsync<GameCamera>(_gameCameraConfigReference);
|
||||
await _configHandle.ToUniTask();
|
||||
_config = _configHandle.Result;
|
||||
|
||||
var cameraObject = new GameObject { name = "Camera" };
|
||||
|
||||
cameraObject.AddComponent<AudioListener>();
|
||||
_camera = cameraObject.AddComponent<UnityEngine.Camera>();
|
||||
|
||||
var universalCameraData = _camera.GetUniversalAdditionalCameraData();
|
||||
universalCameraData.renderPostProcessing = _config.PostProcessing;
|
||||
|
||||
_camera.fieldOfView = _config.FieldOfView;
|
||||
_camera.nearClipPlane = _config.NearClip;
|
||||
_camera.farClipPlane = _config.FarClip;
|
||||
_camera.clearFlags = _config.ClearFlags;
|
||||
|
||||
Object.DontDestroyOnLoad(cameraObject);
|
||||
|
||||
return new CameraStateMachineContext.CameraLoadedData(_camera);
|
||||
}
|
||||
|
||||
public void CreateCameraStateMachineRunner(CameraStateMachine cameraStateMachine)
|
||||
{
|
||||
var runner = _camera.AddComponent<CameraStateMachineRunner>();
|
||||
runner.SetStateMachine(cameraStateMachine);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Addressables.Release(_configHandle);
|
||||
Addressables.ReleaseInstance(_camera.gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4c05e01628b742be94dfd0bbbdfb87fa
|
||||
timeCreated: 1767302222
|
||||
@@ -0,0 +1,36 @@
|
||||
using Code.Infrastructure.Camera.CameraStates;
|
||||
using Code.Infrastructure.Input;
|
||||
using Reflex.Attributes;
|
||||
|
||||
namespace Code.Infrastructure.Camera
|
||||
{
|
||||
public enum CameraMode
|
||||
{
|
||||
None,
|
||||
Cleaner
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b220b02510c34ea08257cc951d949fd7
|
||||
timeCreated: 1761671720
|
||||
@@ -0,0 +1,15 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Infrastructure.Camera
|
||||
{
|
||||
public class CameraStateMachineRunner : MonoBehaviour
|
||||
{
|
||||
private CameraStateMachine _cameraStateMachine;
|
||||
|
||||
public void SetStateMachine(CameraStateMachine cameraStateMachine) => _cameraStateMachine = cameraStateMachine;
|
||||
|
||||
private void Update() => _cameraStateMachine.Update();
|
||||
|
||||
private void LateUpdate() => _cameraStateMachine.LateUpdate();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fc7c5cfabb3c4d60bb283444a1c9a53b
|
||||
timeCreated: 1775490818
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d7399e433dff42a185f62d79b546b059
|
||||
timeCreated: 1761671908
|
||||
@@ -0,0 +1,14 @@
|
||||
using Code.Infrastructure.StateMachine;
|
||||
|
||||
namespace Code.Infrastructure.Camera.CameraStates
|
||||
{
|
||||
public abstract class BaseCameraState : BaseState<CameraMode, CameraStateMachineContext>
|
||||
{
|
||||
protected BaseCameraState(CameraStateMachineContext context) : base(context)
|
||||
{
|
||||
}
|
||||
|
||||
public abstract void Update();
|
||||
public abstract void LateUpdate();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7901175f2c0646fda8741c4c269ce54b
|
||||
timeCreated: 1767127681
|
||||
@@ -0,0 +1,22 @@
|
||||
using Code.Infrastructure.Generators;
|
||||
|
||||
namespace Code.Infrastructure.Camera.CameraStates
|
||||
{
|
||||
[State(typeof(CameraMode),typeof(CameraStateMachineContext), ManualInherit = true)]
|
||||
public partial class NoneCameraState : BaseCameraState
|
||||
{
|
||||
public NoneCameraState(CameraStateMachineContext context) : base(context)
|
||||
{
|
||||
}
|
||||
|
||||
public override CameraMode MyState => CameraMode.None;
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
}
|
||||
|
||||
public override void LateUpdate()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cb14de48ff13488c8edb4431ac34e5be
|
||||
timeCreated: 1767301090
|
||||
@@ -0,0 +1,19 @@
|
||||
using Code.Infrastructure.Generators;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AddressableAssets;
|
||||
using UnityEngine.Rendering.Universal;
|
||||
|
||||
namespace Code.Infrastructure.Camera
|
||||
{
|
||||
[CreateAssetMenu(fileName = "GameCamera", menuName = "Configs/Camera/CameraConfig")]
|
||||
[Config("Configs/Camera/CameraConfig")]
|
||||
public class GameCamera : ScriptableObject
|
||||
{
|
||||
public float FieldOfView;
|
||||
public float NearClip;
|
||||
public float FarClip;
|
||||
public bool PostProcessing;
|
||||
public bool RenderShadows;
|
||||
public CameraClearFlags ClearFlags;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8bbd78d2335f4e55945f1e56ff536200
|
||||
timeCreated: 1785830560
|
||||
Reference in new issue
Block a user