Example #1
0
        private void ParseBundleFiles(EndianStream stream)
        {
            bool isClosable = m_isNewStream || m_isNewDataStream;

            m_fileData = new AssetsFileData(stream.BaseStream, isClosable);
            long baseOffset = stream.BaseStream.Position;
            int  fileCount  = stream.ReadInt32();

            for (int i = 0; i < fileCount; i++)
            {
                string fileName   = stream.ReadStringZeroTerm();
                int    fileOffset = stream.ReadInt32();
                int    fileSize   = stream.ReadInt32();

                long entryOffset = baseOffset + fileOffset;
                m_fileData.AddEntry(fileName, fileOffset, fileSize);
            }
        }
Example #2
0
        private void ParseBundle6Files(EndianStream blockStream, ref long blockPosition, EndianStream dataStream, ref long dataPosition)
        {
            // blockStream and dataStream could be same stream. so we should handle this situation properly

            bool isClosable = m_isNewStream || m_isNewDataStream;

            m_fileData = new AssetsFileData(dataStream.BaseStream, isClosable);
            blockStream.BaseStream.Position = blockPosition;
            int fileCount = blockStream.ReadInt32();

            for (int i = 0; i < fileCount; i++)
            {
                long   fileOffset = blockStream.ReadInt64();
                long   fileSize   = blockStream.ReadInt64();
                int    unused     = blockStream.ReadInt32();
                string fileName   = blockStream.ReadStringZeroTerm();

                long entryOffset = dataPosition + fileOffset;
                m_fileData.AddEntry(fileName, entryOffset, fileSize);
            }
        }