Skip to content
Snippets Groups Projects
MeshRendererHintAnimation.cs 1.44 KiB
Newer Older
John Schihada's avatar
John Schihada committed
using UnityEngine;
using static GlobalSettings;
John Schihada's avatar
John Schihada committed

public class MeshRendererHintAnimation : MonoBehaviour
{
    public MeshRenderer meshRendererToChange;
    private Color meshRendererToChangeDefaultColor;
    
    private Color animationStartColor;
    private Color animationEndColor;
    private float animateDuration;
John Schihada's avatar
John Schihada committed
    private bool animating = false;
    private float timer = 0;

    // Start is called before the first frame update
    void Start()
    {
        if (meshRendererToChange != null)
            meshRendererToChangeDefaultColor = meshRendererToChange.material.color;

        animationStartColor = globalSettings.hintAnimationStartColor;
        animationEndColor = globalSettings.hintAnimationEndColor;
        animateDuration = globalSettings.hintAnimationDuration;
John Schihada's avatar
John Schihada committed
    }

    // Update is called once per frame
    void Update()
    {
        if (animating) {
            this.timer += Time.deltaTime;
            Animate();
        }
    }

    public void AnimationTrigger() {
        if (meshRendererToChange != null)
            animating = true;
    }

    private void Animate() {
        if (timer >= animateDuration)
        {
            animating = false;
            timer = 0;
            meshRendererToChange.material.color = meshRendererToChangeDefaultColor;
        }
        else {
            meshRendererToChange.material.color = Color.Lerp(animationStartColor, animationEndColor, Mathf.PingPong(Time.time, 1));
        }

    }
}