This commit is contained in:
2025-07-14 22:24:27 +08:00
parent daacc18ecf
commit 4af19ef574
7722 changed files with 72086 additions and 0 deletions

View File

@ -0,0 +1,46 @@
#include "UnrealArchiveFileSource.h"
UnrealArchiveFileSource::UnrealArchiveFileSource(
const TSharedRef<FArchive, ESPMode::ThreadSafe> 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 (fileSize < position)
{
return -1; // EOF
}
int64_t curPos = archive->Tell();
if (curPos != position)
{
archive->Seek(position);
}
if (position + readSize > fileSize)
{
readSize = fileSize - position;
}
if (readSize > 0)
{
archive->Serialize(buffer, readSize);
}
return readSize;
}