Files
UnrealEngineUWP/Engine/Source/Developer/CookMetadata/Private/CookMetadata.cpp
dan thompson 1c341b9abd Fix for goofs with serialization.
#rb matt.breindel

[CL 26221483 by dan thompson in ue5-main branch]
2023-06-23 19:05:46 -04:00

63 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "CookMetadata.h"
#include "Hash/xxhash.h"
#include "Memory/MemoryView.h"
namespace UE::Cook
{
const FString& GetCookMetadataFilename()
{
static const FString CookMetadataFilename(TEXT("CookMetadata.ucookmeta"));
return CookMetadataFilename;
}
constexpr uint32 COOK_METADATA_HEADER_MAGIC = 'UCMT';
bool FCookMetadataState::Serialize(FArchive& Ar)
{
uint32 MagicHeader = 0;
if (Ar.IsLoading())
{
Ar << MagicHeader;
if (MagicHeader != COOK_METADATA_HEADER_MAGIC)
{
return false; // not a metadata file.
}
}
else
{
MagicHeader = COOK_METADATA_HEADER_MAGIC;
Ar << MagicHeader;
Version = ECookMetadataStateVersion::LatestVersion;
}
Ar << Version;
if (Ar.IsLoading())
{
if (Version != ECookMetadataStateVersion::LatestVersion)
{
return false; // invalid version - current we don't support backcompat
}
}
Ar << PluginHierarchy;
Ar << AssociatedDevelopmentAssetRegistryHash;
Ar << AssociatedDevelopmentAssetRegistryHashPostWriteback;
Ar << Platform;
Ar << BuildVersion;
Ar << HordeJobId;
Ar << SizesPresent;
return true;
}
/* static */
uint64 FCookMetadataState::ComputeHashOfDevelopmentAssetRegistry(FMemoryView InSerializedDevelopmentAssetRegistry)
{
return FXxHash64::HashBufferChunked(InSerializedDevelopmentAssetRegistry.GetData(), InSerializedDevelopmentAssetRegistry.GetSize(), 1ULL << 19).Hash;
}
} // end namespace