using UnityEngine;

public class WarningBlink : MonoBehaviour
{
    public float rate = 1f;
    private int _tintId;
    private Color _color;
    private float _ratio;
    private Material _material;

    private void Awake()
    {
        _tintId = Shader.PropertyToID("_TintColor");
        _material = GetComponent<Renderer>().material;
        _color = _material.GetColor(_tintId);
    }

    private void OnEnable()
    {
        _ratio = 0f;
    }

    private void OnDestroy()
    {
        if (_material != null)
            Destroy(_material);
    }

    private void Update()
    {
        _ratio += Time.deltaTime * rate;
        if (_ratio > 1f)
            _ratio = _ratio - Mathf.Floor(_ratio);
        var colorRatio = 1f - Mathf.Abs(_ratio - 0.5f) * 2f;
        _color.a = colorRatio;
        _material.SetColor(_tintId, _color);
    }
}