Files
riversong-code-showcase/Source/Riversong/Config/UnityObjectInjector.cs
2026-05-21 16:04:49 +02:00

64 lines
2.1 KiB
C#

using Sirenix.OdinInspector;
using Unity.Cinemachine;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.UIElements;
namespace DanieleMarotta.RiversongCodeShowcase
{
public class UnityObjectInjector : MonoBehaviour, IScene, IServiceProvider
{
[field: TitleGroup("Config")]
[field: SerializeField]
public GameConfig GameConfig { get; private set; }
[field: SerializeField] public BuildVersionAsset BuildVersion { get; private set; }
[field: TitleGroup("Scene")]
[field: SerializeField]
public Camera MainCamera { get; private set; }
[field: TitleGroup("Scene")]
[field: SerializeField]
public CinemachineCamera CinemachineCamera { get; private set; }
[field: TitleGroup("Scene")]
[field: SerializeField]
public SceneFolders SceneFolders { get; private set; }
[field: TitleGroup("Scene")]
[field: SerializeField]
public UIDocument LoadingOverlay { get; private set; }
[field: FoldoutGroup("Scene/Day Night Cycle")]
[field: SerializeField]
public Transform LightRig { get; private set; }
[field: FoldoutGroup("Scene/Day Night Cycle")]
[field: SerializeField]
public Light MainLight { get; private set; }
[field: FoldoutGroup("Scene/Day Night Cycle")]
[field: SerializeField]
public Light NightLight { get; private set; }
[field: FoldoutGroup("Scene/Day Night Cycle")]
[field: SerializeField]
public Volume NightVolume { get; private set; }
[field: FoldoutGroup("Scene/Day Night Cycle")]
[field: SerializeField]
public Volume BloomVolume { get; private set; }
[field: FoldoutGroup("Scene/Day Night Cycle")]
[field: SerializeField]
public Volume WarmTintVolume { get; private set; }
public void RegisterServices(IServiceLocator serviceLocator)
{
serviceLocator.RegisterService(GameConfig);
serviceLocator.RegisterService(BuildVersion);
serviceLocator.RegisterService<IScene>(this);
}
}
}