Beispiel #1
0
        private static FtexFile GetFtexFile(string filePath)
        {
            string fileDirectory = Path.GetDirectoryName(filePath);
            string fileName = Path.GetFileNameWithoutExtension(filePath);

            FtexFile ftexFile;
            using (FileStream ftexStream = new FileStream(filePath, FileMode.Open))
            {
                ftexFile = FtexFile.ReadFtexFile(ftexStream);
            }

            for (byte fileNumber = 1; fileNumber <= ftexFile.FtexsFileCount; fileNumber++)
            {
                FtexsFile ftexsFile = new FtexsFile
                {
                    FileNumber = fileNumber
                };
                ftexFile.AddFtexsFile(ftexsFile);
            }

            foreach (var mipMapInfo in ftexFile.MipMapInfos)
            {
                string ftexsName = String.Format("{0}.{1}.ftexs", fileName, mipMapInfo.FtexsFileNumber);
                string ftexsFilePath = Path.Combine(fileDirectory, ftexsName);

                try
                {
                    using (FileStream ftexsStream = new FileStream(ftexsFilePath, FileMode.Open))
                    {
                        ftexsStream.Position = mipMapInfo.Offset;
                        FtexsFile ftexsFile;
                        ftexFile.TryGetFtexsFile(mipMapInfo.FtexsFileNumber, out ftexsFile);
                        ftexsFile.Read(ftexsStream, mipMapInfo.ChunkCount);
                    }
                }
                catch (FileNotFoundException e)
                {
                    throw new MissingFtexsFileException("The ftexs file " + ftexsName + " could not be found.", e);
                }
            }
            return ftexFile;
        }