55 lines
1.2 KiB
C#
55 lines
1.2 KiB
C#
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<FogSetting> fogSettings;
|
|
|
|
private AzureTimeController azureTimeController;
|
|
|
|
public void SetFogSettings()
|
|
{
|
|
azureTimeController = ((azureTimeController == null) ? GetComponent<AzureTimeController>() : 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();
|
|
}
|
|
}
|