Esempio n. 1
0
        void Deserialize(string schemeName)
        {
            Name = schemeName;

            if (Storage.FileExists(ColorSchemeStorageDirectoryName + "\\" + schemeName))
            {
                using (StreamReader reader = new StreamReader(Storage.OpenFile(ColorSchemeStorageDirectoryName + "\\" + schemeName, FileMode.Open, FileAccess.Read)))
                {
                    DeserializeFromString(reader.ReadToEnd());
                }
            }

            // Fill all nonsaved elements
            foreach (Element element in Element.Elements)
            {
                if (!materials.ContainsKey(element))
                {
                    Material material = new Material();
                    materials.Add(element, material);
                }
            }
        }
        private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if(elementsListBox.SelectedItems.Count>0)
            {
                materialGrid.IsEnabled = true;

                if (selectedMaterial != null) selectedMaterial.PropertyChanged -= OnSelectedMaterialPropertyChanged;

                selectedMaterial = (elementsListBox.SelectedItems[0] as Tuple<Element, Material>).Item2;

                UpdateSelectedMaterial();

                if (selectedMaterial != null) selectedMaterial.PropertyChanged += OnSelectedMaterialPropertyChanged;

            }
            else
            {
                if (selectedMaterial != null) selectedMaterial.PropertyChanged -= OnSelectedMaterialPropertyChanged;
                materialGrid.IsEnabled = false;
                selectedMaterial = null;
            }
        }
Esempio n. 3
0
        // Deserializes color scheme from string
        internal void DeserializeFromString(string dataString)
        {
            Transaction.Suspend();

            try
            {
                string[] lines = dataString.Split('\n');
                for (int i = 0; i < lines.Length; i++)
                {
                    string[] data = lines[i].Split('|');
                    if (data.Length == 10)
                    {
                        Element element = Element.GetBySymbol(data[0]);
                        Material material;
                        if (materials.ContainsKey(element))
                        {
                            // FIXME: use material.Serialize methods (to fix undo/redo issues)
                            material = materials[element];
                            material.Ambient = (Color) ColorConverter.ConvertFromString(data[1]);
                            material.Diffuse = (Color) ColorConverter.ConvertFromString(data[2]);
                            material.Specular = (Color) ColorConverter.ConvertFromString(data[3]);
                            material.Emissive = (Color) ColorConverter.ConvertFromString(data[4]);
                            material.Glossiness = Convert.ToDouble(data[5], CultureInfo.InvariantCulture);
                            material.SpecularPower = Convert.ToDouble(data[6], CultureInfo.InvariantCulture);
                            material.ReflectionLevel = Convert.ToDouble(data[7], CultureInfo.InvariantCulture);
                            material.BumpLevel = Convert.ToDouble(data[8], CultureInfo.InvariantCulture);
                            material.EmissiveLevel = Convert.ToDouble(data[9], CultureInfo.InvariantCulture);
                        }
                        else
                        {
                            // FIXME: use material.Serialize methods (to fix undo/redo issues)
                            material = new Material()
                                           {
                                               Ambient = (Color) ColorConverter.ConvertFromString(data[1]),
                                               Diffuse = (Color) ColorConverter.ConvertFromString(data[2]),
                                               Specular = (Color) ColorConverter.ConvertFromString(data[3]),
                                               Emissive = (Color) ColorConverter.ConvertFromString(data[4]),
                                               Glossiness = Convert.ToDouble(data[5], CultureInfo.InvariantCulture),
                                               SpecularPower = Convert.ToDouble(data[6], CultureInfo.InvariantCulture),
                                               ReflectionLevel =
                                                   Convert.ToDouble(data[7], CultureInfo.InvariantCulture),
                                               BumpLevel = Convert.ToDouble(data[8], CultureInfo.InvariantCulture),
                                               EmissiveLevel = Convert.ToDouble(data[9], CultureInfo.InvariantCulture)
                                           };
                            materials.Add(element, material);
                        }
                    }
                }
            }
            finally
            {
                Transaction.Resume();
            }
        }
Esempio n. 4
0
        static MaterialRenderData GetMaterialRenderData(Material material)
        {
            MaterialRenderData data = new MaterialRenderData
            {
                Ambient = ToInt32(material.Ambient),
                Diffuse = ToInt32(material.Diffuse),
                Specular = ToInt32(material.Specular),
                Emissive = ToInt32(material.Emissive),
                Glossiness = (float)material.Glossiness,
                SpecularPower = (float)material.SpecularPower,
                ReflectionLevel = (float)material.ReflectionLevel,
                BumpLevel = (float)material.BumpLevel,
                EmissiveLevel = (float)material.EmissiveLevel
            };

            return data;
        }