Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Data.SqlTypes;
- using System.IO;
- using System.Linq;
- using System.Runtime.InteropServices;
- using BinarySerialization;
- using DIVALib.ImageUtils;
- namespace TXP2DDS
- {
- class Program
- {
- static void Main(string[] args)
- {
- //var dir = @"D:\QuickBMS\nez_txp\CLOUD.txp";
- var dir = @"D:\QuickBMS\nez_txp";
- //var dir = @"D:\QuickBMS\nez_txp\mikitm001_tex.bin";
- //var dir = @"D:\QuickBMS\nez_txp\mikitm001_tex_tex06.dds";
- //var dir = args[0];
- /* */
- if (File.GetAttributes(dir).HasFlag(FileAttributes.Directory))
- {
- var ddsPaths = new List<string>();
- foreach (var filePath in Directory.EnumerateFiles(dir))
- {
- using (var file = new FileStream(filePath, FileMode.Open))
- {
- switch (Path.GetExtension(filePath))
- {
- case ".bin":
- case ".txp":
- TxpToDds(file, filePath);
- break;
- case ".dds":
- ddsPaths.Add(filePath);
- break;
- }
- }
- }
- if (ddsPaths.Count > 0) DdsToTxpAtlas(ddsPaths);
- }
- else
- {
- using (var file = new FileStream(dir, FileMode.Open))
- {
- switch (Path.GetExtension(dir))
- {
- case ".bin":
- case ".txp":
- TxpToDds(file, dir);
- break;
- case ".dds":
- DdsToTxp(file, dir);
- break;
- }
- }
- }
- //var serializer = new BinarySerializer();
- }
- private static void OnMemberDeserializing(object sender, MemberSerializingEventArgs e)
- {
- Console.CursorLeft = e.Context.Depth * 4;
- Console.WriteLine($"D -Start: {e.MemberName} @ {e.Offset}");
- }
- private static void OnMemberDeserialized(object sender, MemberSerializedEventArgs e)
- {
- Console.CursorLeft = e.Context.Depth * 4;
- var value = e.Value ?? "null";
- Console.WriteLine($"D-End: {e.MemberName} ({value}) @ {e.Offset}");
- }
- public static void TxpToDds(Stream s, string path)
- {
- var serializer = new BinarySerializer();
- var atlas = serializer.Deserialize<TxpTextureAtlas>(s);
- atlas.SetTextures(s);
- var ddsTex = (List<DdsFile>) atlas;
- var i = 0;
- var texPath = $"{path.Substring(0, path.Length - 4)}_tex";
- foreach (var tex in ddsTex)
- {
- using (var save = new FileStream($"{texPath}{i++:00}.dds", FileMode.Create)) serializer.Serialize(save, tex);
- }
- }
- public static void DdsToTxp(Stream s, string path)
- {
- var serializer = new BinarySerializer();
- var dds = serializer.Deserialize<DdsFile>(s);
- dds.SetMipMaps();
- using (var file = new FileStream(Path.ChangeExtension(path, "dds"), FileMode.Create)) serializer.Serialize(file, dds.ToTxp());
- }
- public static void DdsToTxpAtlas(List<string> ddsFiles)
- {
- var atlas = new TxpTextureAtlas();
- var serializer = new BinarySerializer();
- foreach (var path in ddsFiles)
- {
- using (var ddsFile = new FileStream(path, FileMode.Open))
- {
- var dds = serializer.Deserialize<DdsFile>(ddsFile);
- dds.SetMipMaps();
- atlas.Textures.Add(dds.ToTxp());
- }
- }
- atlas.TextureCount = atlas.Textures.Count;
- atlas.SetTextureOffsets();
- using (var txpFile = new FileStream(Path.ChangeExtension(ddsFiles[0], "txp"), FileMode.Create)) serializer.Serialize(txpFile, atlas);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement