コード例 #1
0
        public static XmlDocument CreateMaterialXml(MeleeRootNode rootNode)
        {
            XmlDocument doc      = new XmlDocument();
            XmlNode     mainNode = doc.CreateElement("DAT");

            doc.AppendChild(mainNode);

            DatDOBJ[] dOBJs = rootNode.Root.GetDataObjects();
            for (int i = 0; i < dOBJs.Length; i++)
            {
                DatDOBJ d = dOBJs[i];

                string  name     = $"DataObject{ i }";
                XmlNode dobjNode = doc.CreateElement(name);
                AppendAttributes(doc, dobjNode, d);

                XmlNode texturesListNode = doc.CreateElement("Textures");
                foreach (var tex in d.Material.Textures)
                {
                    XmlNode texNode = doc.CreateElement("Texture");
                    AppendTexAttributes(doc, tex, texNode);
                    texturesListNode.AppendChild(texNode);
                }
                dobjNode.AppendChild(texturesListNode);

                mainNode.AppendChild(dobjNode);
            }

            return(doc);
        }
コード例 #2
0
        private static void SaveMeleeDatXml(string sourceDir, string outputDir, string file)
        {
            MeleeDataNode meleeDataNode = new MeleeDataNode(file);
            if (meleeDataNode.DatFile.Roots.Length == 0)
                return;

            var rootNode = new MeleeRootNode(meleeDataNode.DatFile.Roots[0]);
            var doc = DatMaterialXml.CreateMaterialXml(rootNode);

            string xmlName = Path.GetFileNameWithoutExtension(file);
            string outputFileName = $"{ outputDir }\\{ xmlName }.xml";

            doc.Save(outputFileName);
        }