50 lines
1.3 KiB
C++
50 lines
1.3 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "UObject/Object.h"
|
|
#include "Serialization/ArchiveUObject.h"
|
|
|
|
/*******************************************************************************
|
|
* FArchiveScriptReferenceCollector
|
|
******************************************************************************/
|
|
|
|
class FArchiveScriptReferenceCollector: public FArchiveUObject
|
|
{
|
|
public:
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param InObjectArray Array to add object references to
|
|
*/
|
|
FArchiveScriptReferenceCollector(TArray<UObject*>& InObjectArray)
|
|
: ObjectArray(InObjectArray)
|
|
{
|
|
ArIsObjectReferenceCollector = true;
|
|
this->SetIsPersistent(false);
|
|
ArIgnoreArchetypeRef = false;
|
|
}
|
|
|
|
protected:
|
|
/**
|
|
* UObject serialize operator implementation
|
|
*
|
|
* @param Object reference to Object reference
|
|
* @return reference to instance of this class
|
|
*/
|
|
FArchive& operator<<(UObject*& Object)
|
|
{
|
|
// Avoid duplicate entries.
|
|
if (Object != NULL && !ObjectArray.Contains(Object))
|
|
{
|
|
check(Object->IsValidLowLevel());
|
|
ObjectArray.Add(Object);
|
|
}
|
|
return *this;
|
|
}
|
|
|
|
/** Stored reference to array of objects we add object references to */
|
|
TArray<UObject*>& ObjectArray;
|
|
};
|