using System; using System.Collections.Generic; using System.Xml; using Oni.Imaging; using Oni.Metadata; namespace Oni.Xml { internal class TmbdXmlExporter : RawXmlExporter { private TmbdXmlExporter(BinaryReader reader, XmlWriter writer) : base(reader, writer) { } public static void Export(BinaryReader reader, XmlWriter writer) { var exporter = new TmbdXmlExporter(reader, writer); exporter.Export(); } private void Export() { int size = Reader.ReadInt32(); int version = Reader.ReadInt32(); int count = Reader.ReadInt32(); var materials = new Dictionary>(count); for (int i = 0; i < count; i++) { var materialName = Reader.ReadString(32); var textureName = Reader.ReadString(32); List textures; if (!materials.TryGetValue(materialName, out textures)) { textures = new List(); materials.Add(materialName, textures); } textures.Add(textureName); } Xml.WriteStartElement("TextureMaterials"); foreach (var pair in materials) { Xml.WriteStartElement("Material"); Xml.WriteAttributeString("Name", pair.Key); foreach (var textureName in pair.Value) Xml.WriteElementString("Texture", textureName); Xml.WriteEndElement(); } Xml.WriteEndElement(); } } }