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;
|
||
|
|
};
|