public virtual Boolean Construct(ref XmlDocument Map) { Boolean Constructed = true; try { XmlNode Node; XmlDocument Doc = new XmlDocument(); Node = Doc.CreateXmlDeclaration("1.0", "utf-8", String.Empty); Doc.AppendChild(Node); Node = Doc.CreateComment(String.Format(" ScpMapper Configuration Data. {0} ", DateTime.Now)); Doc.AppendChild(Node); Node = Doc.CreateNode(XmlNodeType.Element, "ScpMapper", null); { CreateTextNode(Doc, Node, "Description", "SCP Mapping File"); CreateTextNode(Doc, Node, "Version", Assembly.GetExecutingAssembly().GetName().Version.ToString()); XmlNode Mapping = Doc.CreateNode(XmlNodeType.Element, "Mapping", null); { foreach (Profile Item in m_Mapper.Values) { if (Item.Default) { CreateTextNode(Doc, Node, "Active", Item.Name); } XmlNode Profile = Doc.CreateNode(XmlNodeType.Element, "Profile", null); { CreateTextNode(Doc, Profile, "Name", Item.Name); CreateTextNode(Doc, Profile, "Type", Item.Type); CreateTextNode(Doc, Profile, "Value", Item.Qualifier); XmlNode Ds3 = Doc.CreateNode(XmlNodeType.Element, DsModel.DS3.ToString(), null); { XmlNode Button = Doc.CreateNode(XmlNodeType.Element, "Button", null); { foreach (Ds3Button Ds3Button in Item.Ds3Button.Keys) { CreateTextNode(Doc, Button, Ds3Button.ToString(), Item.Ds3Button[Ds3Button].ToString()); } } Ds3.AppendChild(Button); XmlNode Axis = Doc.CreateNode(XmlNodeType.Element, "Axis", null); { foreach (Ds3Axis Ds3Axis in Item.Ds3Axis.Keys) { CreateTextNode(Doc, Axis, Ds3Axis.ToString(), Item.Ds3Axis[Ds3Axis].ToString()); } } Ds3.AppendChild(Axis); } Profile.AppendChild(Ds3); XmlNode Ds4 = Doc.CreateNode(XmlNodeType.Element, DsModel.DS4.ToString(), null); { XmlNode Button = Doc.CreateNode(XmlNodeType.Element, "Button", null); { foreach (Ds4Button Ds4Button in Item.Ds4Button.Keys) { CreateTextNode(Doc, Button, Ds4Button.ToString(), Item.Ds4Button[Ds4Button].ToString()); } } Ds4.AppendChild(Button); XmlNode Axis = Doc.CreateNode(XmlNodeType.Element, "Axis", null); { foreach (Ds4Axis Ds4Axis in Item.Ds4Axis.Keys) { CreateTextNode(Doc, Axis, Ds4Axis.ToString(), Item.Ds4Axis[Ds4Axis].ToString()); } } Ds4.AppendChild(Axis); } Profile.AppendChild(Ds4); } Mapping.AppendChild(Profile); } } Node.AppendChild(Mapping); } Doc.AppendChild(Node); Map = Doc; } catch { Constructed = false; } return(Constructed); }