Esempio n. 1
0
        /// <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);
            }
        }