/// <summary> /// Gets or sets the value of a parameter with the specified name. /// </summary> public object this[string name] { get { int index = 0; if (nameToIndex != null && nameToIndex.TryGetValue(name, out index)) { return(values[index].Value); } return(null); } set { if (string.IsNullOrEmpty(name)) { throw new ArgumentException("name"); } EffectParameter parameter = null; if (effect != null && (parameter = effect.GetParameter(name)) == null) { throw new InvalidOperationException("Cannot find parameter " + name); } if (values == null) { values = new List <Entry>(); } Entry entry = new Entry(); if ((entry.Parameter = parameter) != null) { // TODO: entry.DefaultValue = parameter.GetValue(); } entry.Value = value; values.Add(entry); if (nameToIndex == null) { nameToIndex = new Dictionary <string, int>(); } nameToIndex.Add(name, values.Count - 1); } }