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); } }
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); } }