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(this); } } }