using System.Collections.Generic; namespace SM.OGL.Shaders { public class UniformArray : IUniform { private Dictionary> storedUniforms = new Dictionary>(); internal List uniformNames = new List(); public int Location { get; internal set; } public string Name { get; internal set; } public UniformCollection Parent { get; internal set; } public GenericShader ParentShader { get; internal set; } public int Length => storedUniforms.Count; public Dictionary this[int index] => Get(index); public Dictionary Get(int index) { if (!storedUniforms.ContainsKey(index)) { Dictionary dic = storedUniforms[index] = new Dictionary(); for (int i = 0; i < uniformNames.Count; i++) { dic.Add(uniformNames[i], new Uniform(Name + $"[{index}]." + uniformNames[i], ParentShader, Parent)); } } return storedUniforms[index]; } } }