Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }