void LoadVT(string inputFolder) { var zadFiles = Directory.EnumerateFiles(inputFolder, "*.zad"); bool firstZad = true; ZAD EnvironmentsZAD = ZAD.Load(Path.Combine(inputFolder, "Environments.zad")); TDX DiffuseTDX = null; TDX SpecularTDX = null; TDX NormalTDX = null; Console.WriteLine("Loading dictionary TDX files..."); foreach (ZADEntry entry in EnvironmentsZAD.Contents) { Console.WriteLine(entry.Name); switch (Path.GetFileName(entry.Name).ToLower()) { case "diffuse_d.tdx": DiffuseTDX = LoadTDXFromZADEntry(entry, EnvironmentsZAD); break; case "specular_s.tdx": SpecularTDX = LoadTDXFromZADEntry(entry, EnvironmentsZAD); break; case "normal_n.tdx": NormalTDX = LoadTDXFromZADEntry(entry, EnvironmentsZAD); break; } } DiffuseMap = (crVTMap)DiffuseTDX.ExtraData; SpecularMap = (crVTMap)SpecularTDX.ExtraData; NormalMap = (crVTMap)NormalTDX.ExtraData; textureListSource.DataSource = DiffuseMap.Entries; TextureList.DataSource = textureListSource; diffusePages = new List<crVTPage>(); for (int i = 0; i < DiffuseMap.PageCount + 1; i++) { int pageWidth = DiffuseMap.GetWidth(i); int pageHeight = DiffuseMap.GetHeight(i); diffusePages.Add(new crVTPage(pageWidth, pageHeight, i, DiffuseMap)); Console.WriteLine("\tDiffuse Page {0} created", i); } specularPages = new List<crVTPage>(); for (int i = 0; i < SpecularMap.PageCount + 1; i++) { int pageWidth = SpecularMap.GetWidth(i); int pageHeight = SpecularMap.GetHeight(i); specularPages.Add(new crVTPage(pageWidth, pageHeight, i, SpecularMap)); Console.WriteLine("\tDiffuse Page {0} created", i); } normalPages = new List<crVTPage>(); for (int i = 0; i < NormalMap.PageCount + 1; i++) { int pageWidth = NormalMap.GetWidth(i); int pageHeight = NormalMap.GetHeight(i); normalPages.Add(new crVTPage(pageWidth, pageHeight, i, NormalMap)); Console.WriteLine("\tDiffuse Page {0} created", i); } if (PageType.SelectedItem == "Diffuse") pageNumSource.DataSource = diffusePages; else if (PageType.SelectedItem == "Specular") pageNumSource.DataSource = specularPages; else if (PageType.SelectedItem == "Normal") pageNumSource.DataSource = normalPages; PageNumSelect.SelectedIndex = 1; foreach (string zadFile in zadFiles) { if (Path.GetFileNameWithoutExtension(zadFile).ToLower() == "environments") continue; //Console.Write("Loading ZAD: " + zadFile); /*if(Path.GetFileNameWithoutExtension(zadFile).ToLower() == "pages_5") { Console.WriteLine("This is page 5"); }*/ ZAD currentZAD = ZAD.Load(zadFile); foreach (ZADEntry entry in currentZAD.Contents) { if (entry.CompressionMethod != CompressionMethods.LZ4) { //Console.WriteLine("This entry isnt compressed using lz4! wtf? {0}", entry.Name); } string tdxName = Path.GetFileNameWithoutExtension(entry.Name).ToLower(); string tileName = tdxName.Split(new Char[] { '_' })[0].ToUpper(); /*if (tileName == "E4C7607E") { Console.WriteLine("This is E4C7607E"); }*/ if (DiffuseMap.TilesByName.ContainsKey(tileName)) { crVTMapTileTDX tileTDX = DiffuseMap.TilesByName[tileName]; //tileTDX.Texture = LoadTDXFromZADEntry(entry, currentZAD); tileTDX.ZADFile = zadFile; tileTDX.ZADEntryLocation = entry.Name; for (int i = 0; i < tileTDX.Coords.Count; i++) { crVTMapTile tile = tileTDX.Coords[i]; tile.TDXTile = tileTDX; //if (tile.Row < diffusePages[tile.Page].maxTilesToStitch && tile.Column < diffusePages[tile.Page].maxTilesToStitch) { diffusePages[tile.Page].Tiles[tile.Row][tile.Column] = tileTDX;// LoadTDXFromZADEntry(entry, currentZAD); } } } if (SpecularMap.TilesByName.ContainsKey(tileName)) { crVTMapTileTDX tileTDX = SpecularMap.TilesByName[tileName]; //tileTDX.Texture = LoadTDXFromZADEntry(entry, currentZAD); tileTDX.ZADFile = zadFile; tileTDX.ZADEntryLocation = entry.Name; for (int i = 0; i < tileTDX.Coords.Count; i++) { crVTMapTile tile = tileTDX.Coords[i]; tile.TDXTile = tileTDX; if (tile.Row < specularPages[tile.Page].maxTilesToStitch && tile.Column < specularPages[tile.Page].maxTilesToStitch) { specularPages[tile.Page].Tiles[tile.Row][tile.Column] = tileTDX;// LoadTDXFromZADEntry(entry, currentZAD); } } } if (NormalMap.TilesByName.ContainsKey(tileName)) { //currentZAD.Extract(entry, Path.Combine(outputFolder, "Normal", "TDX")+"/"); crVTMapTileTDX tileTDX = NormalMap.TilesByName[tileName]; //tileTDX.Texture = LoadTDXFromZADEntry(entry, currentZAD); tileTDX.ZADFile = zadFile; tileTDX.ZADEntryLocation = entry.Name; for (int i = 0; i < tileTDX.Coords.Count; i++) { crVTMapTile tile = tileTDX.Coords[i]; tile.TDXTile = tileTDX; if (tile.Row < normalPages[tile.Page].maxTilesToStitch && tile.Column < normalPages[tile.Page].maxTilesToStitch) { normalPages[tile.Page].Tiles[tile.Row][tile.Column] = tileTDX;// LoadTDXFromZADEntry(entry, currentZAD); } } } } if (firstZad && 1 == 0) { firstZad = false; foreach (var vtentry in DiffuseMap.Entries) { bool breakloops = false; foreach (var vtpage in diffusePages) { var tiles = vtpage.GetTiles(vtentry); foreach (var vttile in tiles) { if (vttile.TDXTile.ZADFile == zadFile) { Logger.LogToFile( Logger.LogLevel.Debug, "{0} = {1} (Diffuse / Page {2})", vttile.TDXTile.ZADEntryLocation, vtentry.FileName, vttile.Page); // breakloops = true; //break; } } //if (breakloops) break; } //if (breakloops) break; } foreach (var vtentry in SpecularMap.Entries) { bool breakloops = false; foreach (var vtpage in specularPages) { var tiles = vtpage.GetTiles(vtentry); foreach (var vttile in tiles) { if (vttile.TDXTile.ZADFile == zadFile) { Logger.LogToFile(Logger.LogLevel.Debug, "{0} = {1} (Specular / Page {2})", vttile.TDXTile.ZADEntryLocation, vtentry.FileName, vttile.Page); //breakloops = true; //break; } } //if (breakloops) break; } //if (breakloops) break; } foreach (var vtentry in NormalMap.Entries) { bool breakloops = false; foreach (var vtpage in normalPages) { var tiles = vtpage.GetTiles(vtentry); foreach (var vttile in tiles) { if (vttile.TDXTile.ZADFile == zadFile) { Logger.LogToFile(Logger.LogLevel.Debug, "{0} = {1} (Normal / Page {2})", vttile.TDXTile.ZADEntryLocation, vtentry.FileName, vttile.Page); //breakloops = true; //break; } } // if (breakloops) break; } //if (breakloops) break; } } //Thread zadThread = new Thread(Program.ExtractZADContent); //zadThread.Start(currentZAD); //Threads.Add(zadThread); //ThreadsAlive++; //break; } TextureList.SetSelected(0, true); }
void LoadVT(string inputFolder) { var zadFiles = Directory.EnumerateFiles(inputFolder, "*.zad"); bool firstZad = true; ZAD EnvironmentsZAD = ZAD.Load(Path.Combine(inputFolder, "Environments.zad")); TDX DiffuseTDX = null; TDX SpecularTDX = null; TDX NormalTDX = null; Console.WriteLine("Loading dictionary TDX files..."); foreach (ZADEntry entry in EnvironmentsZAD.Contents) { Console.WriteLine(entry.Name); switch (Path.GetFileName(entry.Name).ToLower()) { case "diffuse_d.tdx": DiffuseTDX = LoadTDXFromZADEntry(entry, EnvironmentsZAD); break; case "specular_s.tdx": SpecularTDX = LoadTDXFromZADEntry(entry, EnvironmentsZAD); break; case "normal_n.tdx": NormalTDX = LoadTDXFromZADEntry(entry, EnvironmentsZAD); break; } } DiffuseMap = (crVTMap)DiffuseTDX.ExtraData; SpecularMap = (crVTMap)SpecularTDX.ExtraData; NormalMap = (crVTMap)NormalTDX.ExtraData; textureListSource.DataSource = DiffuseMap.Entries; TextureList.DataSource = textureListSource; diffusePages = new List <crVTPage>(); for (int i = 0; i < DiffuseMap.PageCount + 1; i++) { int pageWidth = DiffuseMap.GetWidth(i); int pageHeight = DiffuseMap.GetHeight(i); diffusePages.Add(new crVTPage(pageWidth, pageHeight, i, DiffuseMap)); Console.WriteLine("\tDiffuse Page {0} created", i); } specularPages = new List <crVTPage>(); for (int i = 0; i < SpecularMap.PageCount + 1; i++) { int pageWidth = SpecularMap.GetWidth(i); int pageHeight = SpecularMap.GetHeight(i); specularPages.Add(new crVTPage(pageWidth, pageHeight, i, SpecularMap)); Console.WriteLine("\tDiffuse Page {0} created", i); } normalPages = new List <crVTPage>(); for (int i = 0; i < NormalMap.PageCount + 1; i++) { int pageWidth = NormalMap.GetWidth(i); int pageHeight = NormalMap.GetHeight(i); normalPages.Add(new crVTPage(pageWidth, pageHeight, i, NormalMap)); Console.WriteLine("\tDiffuse Page {0} created", i); } if (PageType.SelectedItem == "Diffuse") { pageNumSource.DataSource = diffusePages; } else if (PageType.SelectedItem == "Specular") { pageNumSource.DataSource = specularPages; } else if (PageType.SelectedItem == "Normal") { pageNumSource.DataSource = normalPages; } PageNumSelect.SelectedIndex = 1; foreach (string zadFile in zadFiles) { if (Path.GetFileNameWithoutExtension(zadFile).ToLower() == "environments") { continue; } //Console.Write("Loading ZAD: " + zadFile); /*if(Path.GetFileNameWithoutExtension(zadFile).ToLower() == "pages_5") * { * Console.WriteLine("This is page 5"); * }*/ ZAD currentZAD = ZAD.Load(zadFile); foreach (ZADEntry entry in currentZAD.Contents) { if (entry.CompressionMethod != CompressionMethods.LZ4) { //Console.WriteLine("This entry isnt compressed using lz4! wtf? {0}", entry.Name); } string tdxName = Path.GetFileNameWithoutExtension(entry.Name).ToLower(); string tileName = tdxName.Split(new Char[] { '_' })[0].ToUpper(); /*if (tileName == "E4C7607E") * { * Console.WriteLine("This is E4C7607E"); * }*/ if (DiffuseMap.TilesByName.ContainsKey(tileName)) { crVTMapTileTDX tileTDX = DiffuseMap.TilesByName[tileName]; //tileTDX.Texture = LoadTDXFromZADEntry(entry, currentZAD); tileTDX.ZADFile = zadFile; tileTDX.ZADEntryLocation = entry.Name; for (int i = 0; i < tileTDX.Coords.Count; i++) { crVTMapTile tile = tileTDX.Coords[i]; tile.TDXTile = tileTDX; //if (tile.Row < diffusePages[tile.Page].maxTilesToStitch && tile.Column < diffusePages[tile.Page].maxTilesToStitch) { diffusePages[tile.Page].Tiles[tile.Row][tile.Column] = tileTDX;// LoadTDXFromZADEntry(entry, currentZAD); } } } if (SpecularMap.TilesByName.ContainsKey(tileName)) { crVTMapTileTDX tileTDX = SpecularMap.TilesByName[tileName]; //tileTDX.Texture = LoadTDXFromZADEntry(entry, currentZAD); tileTDX.ZADFile = zadFile; tileTDX.ZADEntryLocation = entry.Name; for (int i = 0; i < tileTDX.Coords.Count; i++) { crVTMapTile tile = tileTDX.Coords[i]; tile.TDXTile = tileTDX; if (tile.Row < specularPages[tile.Page].maxTilesToStitch && tile.Column < specularPages[tile.Page].maxTilesToStitch) { specularPages[tile.Page].Tiles[tile.Row][tile.Column] = tileTDX;// LoadTDXFromZADEntry(entry, currentZAD); } } } if (NormalMap.TilesByName.ContainsKey(tileName)) { //currentZAD.Extract(entry, Path.Combine(outputFolder, "Normal", "TDX")+"/"); crVTMapTileTDX tileTDX = NormalMap.TilesByName[tileName]; //tileTDX.Texture = LoadTDXFromZADEntry(entry, currentZAD); tileTDX.ZADFile = zadFile; tileTDX.ZADEntryLocation = entry.Name; for (int i = 0; i < tileTDX.Coords.Count; i++) { crVTMapTile tile = tileTDX.Coords[i]; tile.TDXTile = tileTDX; if (tile.Row < normalPages[tile.Page].maxTilesToStitch && tile.Column < normalPages[tile.Page].maxTilesToStitch) { normalPages[tile.Page].Tiles[tile.Row][tile.Column] = tileTDX;// LoadTDXFromZADEntry(entry, currentZAD); } } } } if (firstZad && 1 == 0) { firstZad = false; foreach (var vtentry in DiffuseMap.Entries) { bool breakloops = false; foreach (var vtpage in diffusePages) { var tiles = vtpage.GetTiles(vtentry); foreach (var vttile in tiles) { if (vttile.TDXTile.ZADFile == zadFile) { Logger.LogToFile(Logger.LogLevel.Debug, "{0} = {1} (Diffuse / Page {2})", vttile.TDXTile.ZADEntryLocation, vtentry.FileName, vttile.Page); // breakloops = true; //break; } } //if (breakloops) break; } //if (breakloops) break; } foreach (var vtentry in SpecularMap.Entries) { bool breakloops = false; foreach (var vtpage in specularPages) { var tiles = vtpage.GetTiles(vtentry); foreach (var vttile in tiles) { if (vttile.TDXTile.ZADFile == zadFile) { Logger.LogToFile(Logger.LogLevel.Debug, "{0} = {1} (Specular / Page {2})", vttile.TDXTile.ZADEntryLocation, vtentry.FileName, vttile.Page); //breakloops = true; //break; } } //if (breakloops) break; } //if (breakloops) break; } foreach (var vtentry in NormalMap.Entries) { bool breakloops = false; foreach (var vtpage in normalPages) { var tiles = vtpage.GetTiles(vtentry); foreach (var vttile in tiles) { if (vttile.TDXTile.ZADFile == zadFile) { Logger.LogToFile(Logger.LogLevel.Debug, "{0} = {1} (Normal / Page {2})", vttile.TDXTile.ZADEntryLocation, vtentry.FileName, vttile.Page); //breakloops = true; //break; } } // if (breakloops) break; } //if (breakloops) break; } } //Thread zadThread = new Thread(Program.ExtractZADContent); //zadThread.Start(currentZAD); //Threads.Add(zadThread); //ThreadsAlive++; //break; } TextureList.SetSelected(0, true); }