#include"UnrealArchiveFileSource.h" UnrealArchiveFileSource::UnrealArchiveFileSource(const TSharedRef inArchive):archive(inArchive) { } int64_t UnrealArchiveFileSource::getAvailableSize(uint64_t offset) { FScopeLock lockCS(&threadLock); return getSize() - offset; } int64_t UnrealArchiveFileSource::getSize() { FScopeLock lockCS(&threadLock); return archive->TotalSize(); } int64_t UnrealArchiveFileSource::readAt(uint64_t position, void *buffer, uint64_t readSize) { FScopeLock lockCS(&threadLock); int64_t fileSize = archive->TotalSize(); if(fileSizeTell(); if(curPos!=position){ archive->Seek(position); } if(position+ readSize > fileSize){ readSize = fileSize - position; } if(readSize>0) { archive->Serialize(buffer, readSize); } return readSize; }