using UnityEngine; using UnityEngine.AzureSky; using UnityEngine.SceneManagement; using _Data.Variabales.DayWeather; public class GameWeatherManager : MonoBehaviour { [Header("This component must be plugged in to Azure Prefab")] private AzureTimeController timeController; private AzureWeatherController weatherController; private AzureEnvironmentController environmentController; [SerializeField] private ScriptableEnumWeatherType weather; [SerializeField] private ScriptableTimeDayVariable timeOfDay; [SerializeField] private float morningTime = 6f; [SerializeField] private float noonTime = 12f; [SerializeField] private float eveningTime = 16f; [SerializeField] private float nightTime = 22f; private void Awake() { timeController = GetComponent(); weatherController = GetComponent(); environmentController = GetComponent(); weather.OnValueChanged += WeatherOnOnValueChanged; timeOfDay.OnValueChanged += TimeOfDayOnOnValueChanged; } private void Start() { if (SceneManager.GetActiveScene().name == "Tutorial Map" || SceneManager.GetActiveScene().name == "Residence") { timeOfDay.Value = morningTime; timeController.SetTimeline(timeOfDay); weatherController.SetNewWeatherProfile(0); return; } TimeOfDay timeOfDayFromHour = timeOfDay.GetTimeOfDayFromHour(); timeOfDay.Morning = morningTime; timeOfDay.Noon = noonTime; timeOfDay.Evening = eveningTime; timeOfDay.Night = nightTime; timeOfDay.SetDayTime(timeOfDayFromHour); timeController.SetTimeline(timeOfDay); weatherController.SetNewWeatherProfile(weather.GetWeatherId()); } private void TimeOfDayOnOnValueChanged(float obj) { timeController.SetTimeline(obj); environmentController.UpdateReflectionProbe(); } private void WeatherOnOnValueChanged(Weather obj) { weatherController.SetNewWeatherProfile((int)obj); environmentController.UpdateReflectionProbe(); } private void OnDestroy() { weather.OnValueChanged -= WeatherOnOnValueChanged; timeOfDay.OnValueChanged -= TimeOfDayOnOnValueChanged; } }