using UnityEngine;

public class ColorManager : MonoBehaviour {
    [SerializeField]
    Material[] materials;
    [SerializeField]
    Material lockedMaterial;
    [SerializeField]
    Color lockedColor;

    float offset = 0;
    int offsetPropertyId;

    public static ColorManager Instance { get; private set; } = null;
    public int ColorCount => materials.Length;

    private void Awake() {
        Instance = this;
        offsetPropertyId = Shader.PropertyToID("HueOffset");
    }

    public Material this[int colorIndex] {
        get {
            if (colorIndex == -1) return lockedMaterial;

            return materials[colorIndex];
        }
    }

    private void Update() {
        offset += Time.deltaTime;
        offset %= 1;

        for (int i = 0; i < materials.Length; i++) {
            var mat = materials[i];
            mat.SetFloat("HueOffset", offset);
            //mat.SetFloat(offsetPropertyId, offset);
        }
    }
}