Files
2026-03-04 10:03:45 +08:00

71 lines
1.6 KiB
C#

using UnityEngine;
[DisallowMultipleComponent]
[ExecuteInEditMode]
[RequireComponent(typeof(MeshRenderer))]
public class AGGlobalWind : MonoBehaviour
{
public bool EnableGlobalWind = true;
private float WindToggle;
[Range(0f, 1f)]
public float WindTreeAmplitude = 0.2f;
[Range(0f, 10f)]
public float WindTreeSpeed = 4f;
[Range(0f, 3f)]
public float WindTreeScale = 0.5f;
[Range(0f, 1f)]
public float WindTreeStiffness = 0.5f;
[Range(0f, 1f)]
[Space(20f)]
public float WindGrassAmplitude = 0.5f;
[Range(0f, 10f)]
public float WindGrassSpeed = 4f;
[Range(0f, 3f)]
public float WindGrassScale = 0.5f;
[Range(0f, 1f)]
public float WindGrassStiffness = 0.5f;
private void Awake()
{
if (Application.isPlaying)
{
base.gameObject.GetComponent<MeshRenderer>().enabled = false;
}
else
{
base.gameObject.GetComponent<MeshRenderer>().enabled = true;
}
}
private void Update()
{
if (EnableGlobalWind)
{
WindToggle = 1f;
}
else
{
WindToggle = 0f;
}
Shader.SetGlobalVector("AGW_WindDirection", base.gameObject.transform.forward);
Shader.SetGlobalFloat("AGW_WindToggle", WindToggle);
Shader.SetGlobalFloat("AGW_WindAmplitude", WindTreeAmplitude);
Shader.SetGlobalFloat("AGW_WindSpeed", WindTreeSpeed);
Shader.SetGlobalFloat("AGW_WindScale", WindTreeScale);
Shader.SetGlobalFloat("AGW_WindTreeStiffness", WindTreeStiffness);
Shader.SetGlobalFloat("AGW_WindGrassAmplitude", WindGrassAmplitude);
Shader.SetGlobalFloat("AGW_WindGrassSpeed", WindGrassSpeed);
Shader.SetGlobalFloat("AGW_WindGrassScale", WindGrassScale);
Shader.SetGlobalFloat("AGW_WindGrassStiffness", WindGrassStiffness);
}
}