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); } } }
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); }
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); }
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"); } }