EM_Task/CoreUObject/Public/Serialization/ObjectAndNameAsStringProxyArchive.h
Boshuang Zhao 5144a49c9b add
2026-02-13 16:18:33 +08:00

41 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Serialization/NameAsStringProxyArchive.h"
class UObject;
/**
* Implements a proxy archive that serializes UObjects and FNames as string data.
*
* Expected use is:
* FArchive* SomeAr = CreateAnAr();
* FObjectAndNameAsStringProxyArchive Ar(*SomeAr);
* SomeObject->Serialize(Ar);
* FinalizeAr(SomeAr);
*
* @param InInnerArchive The actual FArchive object to serialize normal data types (FStrings, INTs, etc)
*/
struct FObjectAndNameAsStringProxyArchive: public FNameAsStringProxyArchive
{
/**
* Creates and initializes a new instance.
*
* @param InInnerArchive - The inner archive to proxy.
* @param bInLoadIfFindFails - Indicates whether to try and load a ref'd object if we don't find it
*/
FObjectAndNameAsStringProxyArchive(FArchive& InInnerArchive, bool bInLoadIfFindFails)
: FNameAsStringProxyArchive(InInnerArchive), bLoadIfFindFails(bInLoadIfFindFails)
{}
/** If we fail to find an object during loading, try and load it. */
bool bLoadIfFindFails;
COREUOBJECT_API virtual FArchive& operator<<(UObject*& Obj) override;
COREUOBJECT_API virtual FArchive& operator<<(FWeakObjectPtr& Obj) override;
COREUOBJECT_API virtual FArchive& operator<<(FSoftObjectPtr& Value) override;
COREUOBJECT_API virtual FArchive& operator<<(FSoftObjectPath& Value) override;
};