Files
UnrealEngine/Engine/Source/Runtime/RuntimeAssetCache/Private/RuntimeAssetCacheEntryMetadata.h
2025-05-18 13:04:45 +08:00

93 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Misc/DateTime.h"
#include "UObject/NameTypes.h"
#include "HAL/ThreadSafeBool.h"
class FArchive;
/**
* Cache entry metadata.
*/
class FCacheEntryMetadata
{
public:
FCacheEntryMetadata(const FDateTime& InLastAccessTime
, int32 InCachedAssetSize
, int32 InCachedAssetVersion
, FName InName)
: LastAccessTime(InLastAccessTime)
, CachedAssetSize(InCachedAssetSize)
, CachedAssetVersion(InCachedAssetVersion)
, Name(InName)
, bIsBuilding(true)
{ }
FCacheEntryMetadata()
: LastAccessTime(FDateTime::Now())
, CachedAssetSize(0)
, CachedAssetVersion(0)
, Name(NAME_None)
, bIsBuilding(false)
{ }
int32 GetCachedAssetVersion() const
{
return CachedAssetVersion;
}
void SetCachedAssetVersion(int32 Version)
{
CachedAssetVersion = Version;
}
int32 GetCachedAssetSize() const
{
return CachedAssetSize;
}
void SetCachedAssetSize(int64 Value)
{
CachedAssetSize = Value;
}
void SetLastAccessTime(FDateTime Value)
{
LastAccessTime = Value;
}
FDateTime GetLastAccessTime() const
{
return LastAccessTime;
}
FName GetName() const
{
return Name;
}
bool IsBuilding() const
{
return bIsBuilding;
}
void FinishBuilding()
{
bIsBuilding = false;
}
friend FArchive& operator<<(FArchive& Ar, FCacheEntryMetadata& Metadata);
private:
FDateTime LastAccessTime;
int64 CachedAssetSize;
int32 CachedAssetVersion;
FName Name;
FThreadSafeBool bIsBuilding;
};
FArchive& operator<<(FArchive& Ar, FCacheEntryMetadata& Metadata);