UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ArchiveScriptReferenceCollector.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "UObject/Field.h"
7#include "UObject/Object.h"
8#include "UObject/ObjectPtr.h"
11
14{
16 UObject* ExcludeOwner;
18 TArray<UObject*>& UniqueReferences;
19public:
25
26 virtual bool IsIgnoringArchetypeRef() const override { return false; }
27 virtual bool IsIgnoringTransient() const override { return false; }
29 {
30 // Skip nulls and the owner object
31 if (InObject != nullptr && InObject != ExcludeOwner)
32 {
33 // Don't collect objects that will never be GC'd anyway
34 if (!InObject->HasAnyInternalFlags(EInternalObjectFlags::Native) && !GUObjectArray.IsDisregardForGC(InObject) && !UniqueReferences.Contains(InObject))
35 {
36 UniqueReferences.Add(InObject);
37 }
38 }
39 }
40};
41
42/*******************************************************************************
43 * FArchiveScriptReferenceCollector
44 ******************************************************************************/
45
47{
48public:
62protected:
69 virtual FArchive& operator<<(UObject*& Object) override
70 {
71 // Avoid duplicate entries.
72 if (Object != nullptr && Object != ExcludeOwner && !ObjectArray.Contains(Object))
73 {
74 check(Object->IsValidLowLevel());
76 }
77 return *this;
78 }
79
81 {
82 if (Object.IsResolved())
83 {
84 UObject* Obj = Object.Get();
85 FArchive& Ar = *this << Obj;
86 return Ar;
87 }
88 return *this;
89 }
90
97 virtual FArchive& operator<<(FField*& Field) override
98 {
99 if (Field != nullptr)
100 {
101 // It's faster to collect references via AddReferencedObjects than serialization
103 Field->AddReferencedObjects(Collector);
104 }
105 return *this;
106 }
107
112};
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ Native
Native (UClass only).
FUObjectArray GUObjectArray
Definition UObjectHash.cpp:55
Definition ArchiveScriptReferenceCollector.h:47
TArray< UObject * > & ObjectArray
Definition ArchiveScriptReferenceCollector.h:109
UObject * ExcludeOwner
Definition ArchiveScriptReferenceCollector.h:111
FArchiveScriptReferenceCollector(TArray< UObject * > &InObjectArray, UObject *InExcludeOwner=nullptr)
Definition ArchiveScriptReferenceCollector.h:54
virtual FArchive & operator<<(UObject *&Object) override
Definition ArchiveScriptReferenceCollector.h:69
virtual FArchive & operator<<(FObjectPtr &Object) override
Definition ArchiveScriptReferenceCollector.h:80
virtual FArchive & operator<<(FField *&Field) override
Definition ArchiveScriptReferenceCollector.h:97
Definition ArchiveUObject.h:17
Definition Archive.h:1208
uint8 ArIgnoreArchetypeRef
Definition Archive.h:894
virtual CORE_API void SetIsPersistent(bool bInIsPersistent)
Definition Archive.cpp:1553
uint8 ArIsObjectReferenceCollector
Definition Archive.h:915
Definition Field.h:556
Definition ArchiveScriptReferenceCollector.h:14
FPropertyReferenceCollector(UObject *InExcludeOwner, TArray< UObject * > &InUniqueReferences)
Definition ArchiveScriptReferenceCollector.h:20
virtual bool IsIgnoringTransient() const override
Definition ArchiveScriptReferenceCollector.h:27
virtual void HandleObjectReference(UObject *&InObject, const UObject *InReferencingObject, const FProperty *InReferencingProperty) override
Definition ArchiveScriptReferenceCollector.h:28
virtual bool IsIgnoringArchetypeRef() const override
Definition ArchiveScriptReferenceCollector.h:26
Definition UnrealType.h:174
Definition UObjectGlobals.h:2492
UE_FORCEINLINE_HINT bool IsDisregardForGC(const class UObjectBase *Object) const
Definition UObjectArray.h:1234
Definition Array.h:670
bool Contains(const ComparisonType &Item) const
Definition Array.h:1518
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_FORCEINLINE_HINT bool HasAnyInternalFlags(EInternalObjectFlags FlagsToCheck) const
Definition UObjectBaseUtility.h:289
Definition Object.h:95
Definition FieldSystemNoiseAlgo.cpp:6
Definition ObjectPtr.h:55