using UnityEngine;
|
|
using System.Collections;
|
|
|
|
|
|
namespace TMPro.Examples
|
|
{
|
|
|
|
public class ShaderPropAnimator : MonoBehaviour
|
|
{
|
|
|
|
private Renderer m_Renderer;
|
|
private Material m_Material;
|
|
|
|
public AnimationCurve GlowCurve;
|
|
|
|
public float m_frame;
|
|
|
|
void Awake()
|
|
{
|
|
// Cache a reference to object's renderer
|
|
m_Renderer = GetComponent<Renderer>();
|
|
|
|
// Cache a reference to object's material and create an instance by doing so.
|
|
m_Material = m_Renderer.material;
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
StartCoroutine(AnimateProperties());
|
|
}
|
|
|
|
IEnumerator AnimateProperties()
|
|
{
|
|
//float lightAngle;
|
|
float glowPower;
|
|
m_frame = Random.Range(0f, 1f);
|
|
|
|
while (true)
|
|
{
|
|
//lightAngle = (m_Material.GetFloat(ShaderPropertyIDs.ID_LightAngle) + Time.deltaTime) % 6.2831853f;
|
|
//m_Material.SetFloat(ShaderPropertyIDs.ID_LightAngle, lightAngle);
|
|
|
|
glowPower = GlowCurve.Evaluate(m_frame);
|
|
m_Material.SetFloat(ShaderUtilities.ID_GlowPower, glowPower);
|
|
|
|
m_frame += Time.deltaTime * Random.Range(0.2f, 0.3f);
|
|
yield return new WaitForEndOfFrame();
|
|
}
|
|
}
|
|
}
|
|
}
|