private static List <FtexsFile> GetFtexsFiles(List <FtexFileMipMapInfo> mipMapInfos, List <byte[]> mipMapDatas) { Dictionary <byte, FtexsFile> ftexsFiles = new Dictionary <byte, FtexsFile>(); foreach (var mipMapInfo in mipMapInfos) { if (ftexsFiles.ContainsKey(mipMapInfo.FtexsFileNumber) == false) { FtexsFile ftexsFile = new FtexsFile { FileNumber = mipMapInfo.FtexsFileNumber }; ftexsFiles.Add(mipMapInfo.FtexsFileNumber, ftexsFile); } } for (int i = 0; i < mipMapInfos.Count; i++) { FtexFileMipMapInfo mipMapInfo = mipMapInfos[i]; FtexsFile ftexsFile = ftexsFiles[mipMapInfo.FtexsFileNumber]; byte[] mipMapData = mipMapDatas[i]; FtexsFileMipMap ftexsFileMipMap = new FtexsFileMipMap(); List <FtexsFileChunk> chunks = GetFtexsChunks(mipMapData); ftexsFileMipMap.AddChunks(chunks); ftexsFile.AddMipMap(ftexsFileMipMap); } return(ftexsFiles.Values.ToList()); }
private static List <FtexFileMipMapInfo> GetMipMapInfos(List <byte[]> levelData, int?ftexsFileCount) { List <FtexFileMipMapInfo> mipMapsInfos = new List <FtexFileMipMapInfo>(); for (int i = 0; i < levelData.Count; i++) { FtexFileMipMapInfo mipMapInfo = new FtexFileMipMapInfo(); int fileSize = levelData[i].Length; mipMapInfo.DecompressedFileSize = fileSize; mipMapInfo.Index = Convert.ToByte(i); mipMapsInfos.Add(mipMapInfo); } SetFtexsFileNumbers(mipMapsInfos, ftexsFileCount); return(mipMapsInfos); }