Skip to content
Snippets Groups Projects
MeshRendererHintAnimation.cs 1.68 KiB
Newer Older
  • Learn to ignore specific revisions
  • John Schihada's avatar
    John Schihada committed
    using UnityEngine;
    
    [RequireComponent(typeof(MeshRenderer))]
    
    John Schihada's avatar
    John Schihada committed
    public class MeshRendererHintAnimation : MonoBehaviour
    {
    
        private MeshRenderer meshRendererToChange;
    
    John Schihada's avatar
    John Schihada committed
        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()
        {
    
            meshRendererToChange = this.GetComponent<MeshRenderer>();
            meshRendererToChangeDefaultColor = meshRendererToChange.material.color;
    
            updateAnimationParameters();
    
    John Schihada's avatar
    John Schihada committed
        }
    
        // Update is called once per frame
        void Update()
        {
    
    John Schihada's avatar
    John Schihada committed
                this.timer += Time.deltaTime;
                Animate();
            }
        }
    
    
    John Schihada's avatar
    John Schihada committed
            if (meshRendererToChange != null)
    
    John Schihada's avatar
    John Schihada committed
                animating = true;
    
    John Schihada's avatar
    John Schihada committed
            if (timer >= animateDuration)
            {
                animating = false;
                timer = 0;
                meshRendererToChange.material.color = meshRendererToChangeDefaultColor;
            }
    
    John Schihada's avatar
    John Schihada committed
                meshRendererToChange.material.color = Color.Lerp(animationStartColor, animationEndColor, Mathf.PingPong(Time.time, 1));
            }
    
        private void updateAnimationParameters()
        {
    
            animationStartColor = GlobalBehaviour.hintAnimationStartColor;
            animationEndColor = GlobalBehaviour.hintAnimationEndColor;
            animateDuration = GlobalBehaviour.hintAnimationDuration;