/// <summary>
 ///
 /// </summary>
 /// <param name="list"></param>
 /// <param name="items"></param>
 public static void AddRange(this Float3List list, IEnumerable <Vector3> items)
 {
     foreach (Vector3 item in items)
     {
         list.Add(item);
     }
 }
        public void SerializeParameters(UIElementCollection parameterGrid, string shaderName)
        {
            ShaderName = shaderName;

            ClearLists();

            foreach (var p in parameterGrid)
            {
                if (p is BoolView)
                {
                    var vm = (p as BoolView).DataContext as BoolViewModel;
                    BoolList.Add(new SerializeHolder <bool>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is IntView)
                {
                    var vm = (p as IntView).DataContext as IntViewModel;
                    IntList.Add(new SerializeHolder <int>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is FloatView)
                {
                    var vm = (p as FloatView).DataContext as FloatViewModel;
                    FloatList.Add(new SerializeHolder <float>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is Float2View)
                {
                    var vm = (p as Float2View).DataContext as Float2ViewModel;
                    Float2List.Add(new SerializeHolder <Float2>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is Float3View)
                {
                    var vm = (p as Float3View).DataContext as Float3ViewModel;
                    Float3List.Add(new SerializeHolder <Float3>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is Float4View)
                {
                    var vm = (p as Float4View).DataContext as Float4ViewModel;
                    Float4List.Add(new SerializeHolder <Float4>(vm.ShaderName, vm.ContentValue));
                }
                else if (p is Texture2DView)
                {
                    var vm = (p as Texture2DView).DataContext as Texture2DViewModel;
                    Texture2DList.Add(new SerializeHolder <string>(vm.ShaderName, vm.FileName));
                }
            }

            var    ofd           = new SaveFileDialog();
            string baseDirectory = System.AppDomain.CurrentDomain.BaseDirectory;

            ofd.InitialDirectory = baseDirectory;
            ofd.DefaultExt       = ".xml";
            ofd.Filter           = "XML files (.xml)|*.xml";
            if (ofd.ShowDialog() == true)
            {
                using (var f = File.Create(ofd.FileName))
                {
                    XmlSer.Serialize(f, this);
                }
            }
        }
 private void ClearLists()
 {
     BoolList.Clear();
     IntList.Clear();
     FloatList.Clear();
     Float2List.Clear();
     Float3List.Clear();
     Float4List.Clear();
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="list"></param>
        /// <param name="items"></param>
        public static void Initialise(this Float3List list, IEnumerable <Vector3> items)
        {
            list.Clear();

            list.AddRange(items);
        }