58 lines
1.9 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|