Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/CTS/CTSWeatherController.cs
2026-03-04 10:03:45 +08:00

58 lines
1.9 KiB
C#

using UnityEngine;
namespace CTS
{
public class CTSWeatherController : MonoBehaviour
{
private Terrain m_terrain;
private void OnEnable()
{
CTSSingleton<CTSTerrainManager>.Instance.RegisterWeatherController(this);
}
private void OnDisable()
{
CTSSingleton<CTSTerrainManager>.Instance.UnregisterWeatherController(this);
}
public void ProcessWeatherUpdate(CTSWeatherManager manager)
{
if (m_terrain == null)
{
m_terrain = GetComponent<Terrain>();
if (m_terrain == null)
{
Debug.Log("CTS Weather Controller must be connected to a terrain to work.");
return;
}
}
if (m_terrain.materialType != Terrain.MaterialType.Custom)
{
Debug.Log("CTS Weather Controller needs a CTS Material to work with.");
return;
}
Material materialTemplate = m_terrain.materialTemplate;
if (materialTemplate == null)
{
Debug.Log("CTS Weather Controller needs a Custom Material to work with.");
return;
}
materialTemplate.SetFloat(CTSShaderID.Snow_Amount, manager.SnowPower * 2f);
materialTemplate.SetFloat(CTSShaderID.Snow_Min_Height, manager.SnowMinHeight);
float value = manager.RainPower * manager.MaxRainSmoothness;
materialTemplate.SetFloat(CTSShaderID.Terrain_Smoothness, value);
if (manager.SeasonalTintActive)
{
Color white = Color.white;
white = ((manager.Season < 1f) ? Color.Lerp(manager.WinterTint, manager.SpringTint, manager.Season) : ((manager.Season < 2f) ? Color.Lerp(manager.SpringTint, manager.SummerTint, manager.Season - 1f) : ((!(manager.Season < 3f)) ? Color.Lerp(manager.AutumnTint, manager.WinterTint, manager.Season - 3f) : Color.Lerp(manager.SummerTint, manager.AutumnTint, manager.Season - 2f))));
for (int i = 0; i < 16; i++)
{
float w = materialTemplate.GetVector(CTSShaderID.Texture_X_Color[i]).w;
materialTemplate.SetVector(CTSShaderID.Texture_X_Color[i], new Vector4(white.r, white.g, white.b, w));
}
}
}
}
}