using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.AzureSky; public class LinearFogController : MonoBehaviour { [Serializable] public struct FogSetting { public int Hour; public Color Color; public float MinDistance; public float MaxDistance; } [SerializeField] private List fogSettings; private AzureTimeController azureTimeController; public void SetFogSettings() { azureTimeController = ((azureTimeController == null) ? GetComponent() : azureTimeController); float x = azureTimeController.GetTimeOfDay().x; OrderListByHour(); int index = 0; for (int i = 0; i < fogSettings.Count; i++) { FogSetting fogSetting = fogSettings[i]; if (x >= (float)fogSetting.Hour) { index = i; } else if (x < (float)fogSetting.Hour) { break; } } FogSetting fogSetting2 = fogSettings[index]; RenderSettings.fogColor = fogSetting2.Color; RenderSettings.fogStartDistance = fogSetting2.MinDistance; RenderSettings.fogEndDistance = fogSetting2.MaxDistance; } private void OrderListByHour() { fogSettings = fogSettings.OrderBy((FogSetting x) => x.Hour).ToList(); } }