54 lines
1.8 KiB
C#
54 lines
1.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace SpriteShadersUltimate
|
|
{
|
|
[AddComponentMenu("Sprite Shaders Ultimate/Wind/Wind Manager")]
|
|
public class WindManagerSSU : MonoBehaviour
|
|
{
|
|
[Header("Settings:")]
|
|
|
|
[Tooltip("Smaller values will result in more frequent changes in wind.")]
|
|
public float windNoiseScale = 0.1f;
|
|
private float lastWindNoiseScale;
|
|
|
|
[Tooltip("Speed at which the wind pattern moves horizontally.")]
|
|
public float windNoiseSpeed = 1;
|
|
|
|
[Tooltip("The wind intensity will be between this value and 'Wind Intensity To'.")]
|
|
public float windIntensityFrom = -0.4f;
|
|
private float lastWindIntensityFrom;
|
|
|
|
[Tooltip("The wind intensity will be between this value and 'Wind Intensity From'.")]
|
|
public float windIntensityTo = 0.4f;
|
|
private float lastWindIntensityTo;
|
|
|
|
//Runtime:
|
|
float currentTime;
|
|
|
|
void Start()
|
|
{
|
|
currentTime = 0;
|
|
}
|
|
|
|
void FixedUpdate()
|
|
{
|
|
ModifyIfChanged(ref windNoiseScale,ref lastWindNoiseScale, "WindNoiseScale");
|
|
ModifyIfChanged(ref windIntensityFrom, ref lastWindIntensityFrom, "WindMinIntensity");
|
|
ModifyIfChanged(ref windIntensityTo, ref lastWindIntensityTo, "WindMaxIntensity");
|
|
|
|
currentTime += Time.fixedDeltaTime * windNoiseSpeed;
|
|
Shader.SetGlobalFloat("WindTime", currentTime);
|
|
}
|
|
|
|
public void ModifyIfChanged(ref float currentValue, ref float oldValue, string globalShaderName)
|
|
{
|
|
if(oldValue != currentValue)
|
|
{
|
|
oldValue = currentValue;
|
|
Shader.SetGlobalFloat(globalShaderName, currentValue);
|
|
}
|
|
}
|
|
}
|
|
} |