Exemple #1
0
        public Technique(string file)
        {
            Name       = file;
            vsdefines_ = new ObservableCollection <string>();
            psdefines_ = new ObservableCollection <string>();
            passes_    = new ObservableCollection <Pass>();

            XmlDocument doc = new XmlDocument();

            doc.Load(file);

            XmlElement root = doc.DocumentElement;

            if (root.HasAttribute("vs"))
            {
                VS = root.GetAttribute("vs");
            }
            if (root.HasAttribute("ps"))
            {
                PS = root.GetAttribute("ps");
            }
            if (root.HasAttribute("vsdefines"))
            {
                string[] defs = root.GetAttribute("vsdefines").Split(' ');
                foreach (string str in defs)
                {
                    VSDefines.Add(str);
                }
            }
            if (root.HasAttribute("psdefines"))
            {
                string[] defs = root.GetAttribute("psdefines").Split(' ');
                foreach (string str in defs)
                {
                    PSDefines.Add(str);
                }
            }
            if (root.HasAttribute("sm3"))
            {
                IsSM3 = root.GetAttribute("sm3").Equals("true");
            }
            if (root.HasAttribute("desktop"))
            {
                IsDesktop = root.GetAttribute("desktop").Equals("true");
            }

            foreach (XmlElement e in root.ChildNodes)
            {
                if (e.Name.Equals("pass"))
                {
                    Pass p = new Pass();
                    p.Parse(e);
                    Passes.Add(p);
                }
            }
        }
Exemple #2
0
        public override void Save()
        {
            XmlDocument doc  = new XmlDocument();
            XmlElement  root = doc.CreateElement("technique");

            doc.AppendChild(root);

            if (VS != null && VS.Length > 0)
            {
                root.SetAttribute("vs", VS);
            }
            if (PS != null && PS.Length > 0)
            {
                root.SetAttribute("ps", PS);
            }
            if (VSDefines.Count > 0)
            {
                root.SetAttribute("vsdefines", string.Join(" ", VSDefines.ToArray()));
            }
            if (PSDefines.Count > 0)
            {
                root.SetAttribute("psdefines", string.Join(" ", PSDefines.ToArray()));
            }
            if (IsSM3.HasValue)
            {
                root.SetAttribute("sm3", IsSM3.Value ? "true" : "false");
            }
            if (IsDesktop.HasValue)
            {
                root.SetAttribute("desktop", IsDesktop.Value ? "true" : "false");
            }

            foreach (Pass pass in Passes)
            {
                root.AppendChild(pass.Save(doc));
            }

            XmlWriterSettings xws = new XmlWriterSettings {
                OmitXmlDeclaration = true, Indent = true
            };

            using (XmlWriter xw = XmlWriter.Create(System.IO.Path.ChangeExtension(Name, "xml"), xws))
                doc.Save(xw);
        }
Exemple #3
0
        public XmlElement Save(XmlDocument doc)
        {
            XmlElement me = doc.CreateElement("pass");

            me.SetAttribute("name", Name);
            if (IsSM3.HasValue)
            {
                me.SetAttribute("sm3", IsSM3.Value ? "true" : "false");
            }
            if (IsDesktop.HasValue)
            {
                me.SetAttribute("desktop", IsDesktop.Value ? "true" : "false");
            }
            if (VS != null && VS.Length > 0)
            {
                me.SetAttribute("vs", VS);
            }
            if (PS != null && PS.Length > 0)
            {
                me.SetAttribute("ps", PS);
            }
            if (VSDefines.Count > 0)
            {
                me.SetAttribute("vsdefines", string.Join(" ", VSDefines.ToArray()));
            }
            if (PSDefines.Count > 0)
            {
                me.SetAttribute("psdefines", string.Join(" ", PSDefines.ToArray()));
            }

            me.SetAttribute("lighting", LightMode.ToString().ToLower());
            me.SetAttribute("blend", BlendMode.ToString().ToLower());
            me.SetAttribute("depthtest", DepthTest.ToString().ToLower());
            me.SetAttribute("depthwrite", DepthWrite ? "true" : "false");
            me.SetAttribute("alphamask", AlphaMask ? "true" : "false");

            return(me);
        }
Exemple #4
0
        public void Parse(XmlElement elem)
        {
            Name = elem.GetAttribute("name");
            if (elem.HasAttribute("ps"))
            {
                PS = elem.GetAttribute("ps");
            }
            if (elem.HasAttribute("vs"))
            {
                VS = elem.GetAttribute("vs");
            }
            if (elem.HasAttribute("vsdefines"))
            {
                string[] defs = elem.GetAttribute("vsdefines").Split(' ');
                foreach (string str in defs)
                {
                    VSDefines.Add(str);
                }
            }
            if (elem.HasAttribute("psdefines"))
            {
                string[] defs = elem.GetAttribute("psdefines").Split(' ');
                foreach (string str in defs)
                {
                    PSDefines.Add(str);
                }
            }
            if (elem.HasAttribute("sm3"))
            {
                IsSM3 = elem.GetAttribute("sm3").Equals("true");
            }
            if (elem.HasAttribute("desktop"))
            {
                IsDesktop = elem.GetAttribute("desktop").Equals("true");
            }

            if (elem.HasAttribute("lighting"))
            {
                string s = elem.GetAttribute("depthtest");
                foreach (LightModes dt in Enum.GetValues(typeof(LightModes)))
                {
                    if (dt.ToString().ToLower().Equals(s))
                    {
                        LightMode = dt;
                        break;
                    }
                }
            }
            if (elem.HasAttribute("blend"))
            {
                string s = elem.GetAttribute("depthtest");
                foreach (BlendModes dt in Enum.GetValues(typeof(BlendModes)))
                {
                    if (dt.ToString().ToLower().Equals(s))
                    {
                        BlendMode = dt;
                        break;
                    }
                }
            }
            if (elem.HasAttribute("depthtest"))
            {
                string s = elem.GetAttribute("depthtest");
                foreach (DepthTest dt in Enum.GetValues(typeof(DepthTest)))
                {
                    if (dt.ToString().ToLower().Equals(s))
                    {
                        DepthTest = dt;
                        break;
                    }
                }
            }
            if (elem.HasAttribute("depthwrite"))
            {
                DepthWrite = elem.GetAttribute("depthwrite").Equals("true");
            }
            if (elem.HasAttribute("alphamask"))
            {
                AlphaMask = elem.GetAttribute("alphamask").Equals("true");
            }
        }