using System; using System.Collections.Generic; using Oni.Imaging; namespace Oni.Motoko { internal class TextureExporter : Exporter { protected string fileType; public TextureExporter(InstanceFileManager fileManager, string outputDirPath, string fileType) : base(fileManager, outputDirPath) { this.fileType = fileType; } protected override List GetSupportedDescriptors(InstanceFile file) { return file.GetNamedDescriptors(TemplateTag.TXMP); } protected override void ExportInstance(InstanceDescriptor descriptor) { var texture = TextureDatReader.Read(descriptor); var filePath = CreateFileName(descriptor, "." + fileType); switch (fileType) { case "tga": TgaWriter.Write(texture.Surfaces[0], filePath); break; case "dds": DdsWriter.Write(texture.Surfaces, filePath); break; case "png": case "jpg": case "bmp": case "tif": #if !NETCORE SysWriter.Write(texture.Surfaces[0], filePath); #endif break; default: throw new NotSupportedException(string.Format("Extracting textures as '{0}' is not supported", fileType)); } } } }