UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UObjectHash.cpp File Reference

Classes

struct  FSetHashBucket
 
struct  FArrayHashBucket
 
struct  FArrayHashBucket::FObjectsArray
 
struct  THashBucketIterator< T >
 
class  TBucketMap< T, K >
 
struct  TBucketMapLock< T >
 
class  FUObjectHashTables
 
class  FHashTableLock
 
struct  FObjectSearchPath
 

Macros

#define UE_UOBJECT_HASH_USES_ARRAYS   0
 

Typedefs

using FHashBucketIterator = THashBucketIterator< FSetHashBucket >
 
using FHashBucket = FSetHashBucket
 

Functions

 DEFINE_LOG_CATEGORY_STATIC (LogUObjectHash, Log, All)
 
 DECLARE_CYCLE_STAT (TEXT("GetObjectsOfClass"), STAT_Hash_GetObjectsOfClass, STATGROUP_UObjectHash)
 
 DECLARE_CYCLE_STAT (TEXT("HashObject"), STAT_Hash_HashObject, STATGROUP_UObjectHash)
 
 DECLARE_CYCLE_STAT (TEXT("UnhashObject"), STAT_Hash_UnhashObject, STATGROUP_UObjectHash)
 
 DEFINE_STAT (STAT_Hash_NumObjects)
 
 LLM_DEFINE_TAG (UObjectHash, TEXT("UObject hashtables"))
 
UObjectStaticFindObjectFastExplicitThreadSafe (FUObjectHashTables &ThreadHash, const UClass *ObjectClass, FName ObjectName, const FString &ObjectPathName, EFindObjectFlags Flags, EObjectFlags ExcludeFlags)
 
UObjectStaticFindObjectFastExplicit (const UClass *ObjectClass, FName ObjectName, const FString &ObjectPathName, EFindObjectFlags Flags, EObjectFlags ExcludeFlags)
 
UObjectStaticFindObjectInPackageInternal (FUObjectHashTables &ThreadHash, const UClass *ObjectClass, const UPackage *ObjectPackage, FName ObjectName, EFindObjectFlags Flags, EObjectFlags ExcludeFlags, EInternalObjectFlags ExclusiveInternalFlags)
 
UObjectStaticFindObjectFastInternalThreadSafe (FUObjectHashTables &ThreadHash, const UClass *ObjectClass, const UObject *ObjectPackage, FName ObjectName, EFindObjectFlags Flags, EObjectFlags ExcludeFlags, EInternalObjectFlags ExclusiveInternalFlags)
 
UObjectStaticFindObjectFastInternal (const UClass *ObjectClass, const UObject *ObjectPackage, FName ObjectName, EFindObjectFlags Flags, EObjectFlags ExcludeFlags, EInternalObjectFlags ExclusiveInternalFlags)
 
bool DoesObjectPossiblyExist (const UObject *InOuter, FName ObjectName)
 
bool StaticFindAllObjectsFastInternal (TArray< UObject * > &OutFoundObjects, const UClass *ObjectClass, FName ObjectName, EFindObjectFlags Flags, EObjectFlags ExcludeFlags, EInternalObjectFlags ExclusiveInternalFlags)
 
UObjectStaticFindFirstObjectFastInternal (const UClass *ObjectClass, FName ObjectName, EFindObjectFlags Flags, EObjectFlags ExcludeFlags, EInternalObjectFlags ExclusiveInternalFlags)
 
UObjectStaticFindObjectFastInternalThreadSafe (FUObjectHashTables &ThreadHash, FRemoteObjectId RemoteId, EObjectFlags InExclusiveFlags, EInternalObjectFlags InExlusiveInternalFlags)
 
UObjectStaticFindObjectFastInternal (FRemoteObjectId RemoteId, EObjectFlags InExclusiveFlags, EInternalObjectFlags InExlusiveInternalFlags)
 
FORCEINLINE void AddToClassMap (FUObjectHashTables &ThreadHash, UObjectBase *Object)
 
FORCEINLINE void RemoveFromClassMap (FUObjectHashTables &ThreadHash, UObjectBase *Object)
 
void ShrinkUObjectHashTables ()
 
uint64 GetRegisteredClassesVersionNumber ()
 
uint64 GetRegisteredNativeClassesVersionNumber ()
 
void GetObjectsWithOuter (const class UObjectBase *Outer, TArray< UObject * > &Results, bool bIncludeNestedObjects, EObjectFlags ExclusionFlags, EInternalObjectFlags ExclusionInternalFlags)
 
void ForEachObjectWithOuterBreakable (const class UObjectBase *Outer, TFunctionRef< bool(UObject *)> Operation, bool bIncludeNestedObjects, EObjectFlags ExclusionFlags, EInternalObjectFlags ExclusionInternalFlags)
 
UObjectBaseFindObjectWithOuter (const class UObjectBase *Outer, const class UClass *ClassToLookFor, FName NameToLookFor)
 
void GetObjectsWithPackage (const class UPackage *Package, TArray< UObject * > &Results, bool bIncludeNestedObjects, EObjectFlags ExclusionFlags, EInternalObjectFlags ExclusionInternalFlags)
 
void ForEachObjectWithPackage (const class UPackage *Package, TFunctionRef< bool(UObject *)> Operation, bool bIncludeNestedObjects, EObjectFlags ExclusionFlags, EInternalObjectFlags ExclusionInternalFlags)
 
void GetObjectsOfClass (const UClass *ClassToLookFor, TArray< UObject * > &Results, bool bIncludeDerivedClasses, EObjectFlags ExclusionFlags, EInternalObjectFlags ExclusionInternalFlags)
 
FORCEINLINE void ForEachObjectOfClasses_Implementation (FUObjectHashTables &ThreadHash, TArrayView< const UClass *const > ClassesToLookFor, TFunctionRef< void(UObject *)> Operation, EObjectFlags ExcludeFlags, EInternalObjectFlags ExclusionInternalFlags)
 
void ForEachObjectOfClass (const UClass *ClassToLookFor, TFunctionRef< void(UObject *)> Operation, bool bIncludeDerivedClasses, EObjectFlags ExclusionFlags, EInternalObjectFlags ExclusionInternalFlags)
 
void ForEachObjectOfClasses (TArrayView< const UClass *const > ClassesToLookFor, TFunctionRef< void(UObject *)> Operation, EObjectFlags ExcludeFlags, EInternalObjectFlags ExclusionInternalFlags)
 
void GetDerivedClasses (const UClass *ClassToLookFor, TArray< UClass * > &Results, bool bRecursive)
 
TMap< UClass *, TSet< UClass * > > GetAllDerivedClasses ()
 
bool ClassHasInstancesAsyncLoading (const UClass *ClassToLookFor)
 
UE_AUTORTFM_NOAUTORTFM void HashObject (UObjectBase *Object)
 
UE_AUTORTFM_NOAUTORTFM void UnhashObject (UObjectBase *Object)
 
void HashObjectExternalPackage (UObjectBase *Object, UPackage *Package)
 
void UnhashObjectExternalPackage (class UObjectBase *Object)
 
UPackageGetObjectExternalPackageThreadSafe (const UObjectBase *Object)
 
UPackageGetObjectExternalPackageInternal (const UObjectBase *Object)
 
void LockUObjectHashTables ()
 
void UnlockUObjectHashTables ()
 
void LogHashStatisticsInternal (TMultiMap< int32, uint32 > &Hash, FOutputDevice &Ar, const bool bShowHashBucketCollisionInfo)
 
void LogHashStatisticsInternal (TBucketMap< int32 > &Hash, FOutputDevice &Ar, const bool bShowHashBucketCollisionInfo)
 
void LogHashStatistics (FOutputDevice &Ar, const bool bShowHashBucketCollisionInfo)
 
void LogHashOuterStatistics (FOutputDevice &Ar, const bool bShowHashBucketCollisionInfo)
 
void LogHashMemoryOverheadStatistics (FOutputDevice &Ar, const EObjectMemoryOverheadOptions InOptions)
 

Variables

FUObjectArray GUObjectArray
 

Macro Definition Documentation

◆ UE_UOBJECT_HASH_USES_ARRAYS

#define UE_UOBJECT_HASH_USES_ARRAYS   0

Typedef Documentation

◆ FHashBucket

◆ FHashBucketIterator

Function Documentation

◆ AddToClassMap()

FORCEINLINE void AddToClassMap ( FUObjectHashTables ThreadHash,
UObjectBase Object 
)

◆ ClassHasInstancesAsyncLoading()

bool ClassHasInstancesAsyncLoading ( const UClass ClassToLookFor)

Returns true if any instances of the class in question are currently being async loaded.

Parameters
ClassToLookForThe class in question
Returns
True if there are any instances of the class being async loaded - includes instances based on derived classes. Otherwise, false

◆ DECLARE_CYCLE_STAT() [1/3]

DECLARE_CYCLE_STAT ( TEXT("GetObjectsOfClass")  ,
STAT_Hash_GetObjectsOfClass  ,
STATGROUP_UObjectHash   
)

◆ DECLARE_CYCLE_STAT() [2/3]

DECLARE_CYCLE_STAT ( TEXT("HashObject")  ,
STAT_Hash_HashObject  ,
STATGROUP_UObjectHash   
)

◆ DECLARE_CYCLE_STAT() [3/3]

DECLARE_CYCLE_STAT ( TEXT("UnhashObject")  ,
STAT_Hash_UnhashObject  ,
STATGROUP_UObjectHash   
)

◆ DEFINE_LOG_CATEGORY_STATIC()

DEFINE_LOG_CATEGORY_STATIC ( LogUObjectHash  ,
Log  ,
All   
)

◆ DEFINE_STAT()

DEFINE_STAT ( STAT_Hash_NumObjects  )

◆ DoesObjectPossiblyExist()

bool DoesObjectPossiblyExist ( const UObject InOuter,
FName  ObjectName 
)

Approximate version of StaticFindObjectFastInternal that may return a false positive - i.e. the object does not exist but the function returns true. Will not return a false negative - i.e. if the object does exist, this function must return true

Parameters
InOuterThe direct outer to search within. Must be non-null.
ObjectNameThe object name to search for.
Returns
Returns a true if the object may possibly exist, false if it definitely does not exist.

◆ FindObjectWithOuter()

UObjectBase * FindObjectWithOuter ( const class UObjectBase Outer,
const class UClass ClassToLookFor = nullptr,
FName  NameToLookFor = NAME_None 
)

Find an objects with a given name and or class within an outer

Parameters
OuterOuter to search for
ClassToLookForif NULL, ignore this parameter, otherwise require the returned object have this class
NameToLookForif NAME_None, ignore this parameter, otherwise require the returned object have this name

◆ ForEachObjectOfClass()

void ForEachObjectOfClass ( const UClass ClassToLookFor,
TFunctionRef< void(UObject *)>  Operation,
bool  bIncludeDerivedClasses = true,
EObjectFlags  ExcludeFlags = RF_ClassDefaultObject,
EInternalObjectFlags  ExclusionInternalFlags = EInternalObjectFlags::None 
)

Performs an operation on all objects of the provided class Note that the operation must not modify UObject hash maps so it can not create, rename or destroy UObjects.

Parameters
OuterUObject class to loop over instances of
OperationFunction to be called for each object
bIncludeDerivedClassesIf true, the results will include objects of child classes as well.
AdditionalExcludeFlagsObjects with any of these flags will be excluded from the results.

◆ ForEachObjectOfClasses()

void ForEachObjectOfClasses ( TArrayView< const UClass *const >  ClassesToLookFor,
TFunctionRef< void(UObject *)>  Operation,
EObjectFlags  ExcludeFlags = RF_ClassDefaultObject,
EInternalObjectFlags  ExclusionInternalFlags = EInternalObjectFlags::None 
)

Performs an operation on all objects of the provided classes Note that the operation must not modify UObject hash maps so it can not create, rename or destroy UObjects.

Parameters
ClassesUObject Classes to loop over instances of
OperationFunction to be called for each object
bIncludeDerivedClassesIf true, the results will include objects of child classes as well.
AdditionalExcludeFlagsObjects with any of these flags will be excluded from the results.

◆ ForEachObjectOfClasses_Implementation()

FORCEINLINE void ForEachObjectOfClasses_Implementation ( FUObjectHashTables ThreadHash,
TArrayView< const UClass *const >  ClassesToLookFor,
TFunctionRef< void(UObject *)>  Operation,
EObjectFlags  ExcludeFlags,
EInternalObjectFlags  ExclusionInternalFlags 
)

◆ ForEachObjectWithOuterBreakable()

void ForEachObjectWithOuterBreakable ( const class UObjectBase Outer,
TFunctionRef< bool(UObject *)>  Operation,
bool  bIncludeNestedObjects = true,
EObjectFlags  ExclusionFlags = RF_NoFlags,
EInternalObjectFlags  ExclusionInternalFlags = EInternalObjectFlags::None 
)

Performs an operation on objects with a given outer, with the possibility to break iteration Note that the operation must not modify the UObject hash maps so it can not create, rename or destroy UObjects.

Parameters
OuterOuter to search for
OperationFunction to be called for each object, returning if we want to continue iteration or not
bIncludeNestedObjectsIf true, then things whose outers directly or indirectly have Outer as an outer are included, these are the nested objects.
ExclusionFlagsSpecifies flags to use as a filter for which objects to return
ExclusiveInternalFlagsSpecifies internal flags to use as a filter for which objects to return

◆ ForEachObjectWithPackage()

void ForEachObjectWithPackage ( const class UPackage Outer,
TFunctionRef< bool(UObject *)>  Operation,
bool  bIncludeNestedObjects = true,
EObjectFlags  ExclusionFlags = RF_NoFlags,
EInternalObjectFlags  ExclusionInternalFlags = EInternalObjectFlags::None 
)

Performs an operation on all objects found within a given package Note that the operation must not modify UObject hash maps so it can not create, rename or destroy UObjects.

Parameters
PackagePackage to iterate into
OperationFunction to be called for each object, return false to break out of the iteration
bIncludeNestedObjectsIf true, then things whose outers directly or indirectly have Outer as an outer are included, these are the nested objects.
ExclusionFlagsSpecifies flags to use as a filter for which objects to return
ExclusiveInternalFlagsSpecifies internal flags to use as a filter for which objects to return

◆ GetAllDerivedClasses()

TMap< UClass *, TSet< UClass * > > GetAllDerivedClasses ( )

Get all base classes and their direct subclasses

◆ GetDerivedClasses()

void GetDerivedClasses ( const UClass ClassToLookFor,
TArray< UClass * > &  Results,
bool  bRecursive = true 
)

Returns an array of classes that were derived from the specified class.

Parameters
ClassToLookForThe parent class of the classes to return.
ResultsAn output list of child classes of the specified parent class.
bRecursiveIf true, the results will include children of the children classes, recursively. Otherwise, only direct decedents will be included.

◆ GetObjectExternalPackageInternal()

UPackage * GetObjectExternalPackageInternal ( const UObjectBase Object)

◆ GetObjectExternalPackageThreadSafe()

UPackage * GetObjectExternalPackageThreadSafe ( const UObjectBase Object)

◆ GetObjectsOfClass()

void GetObjectsOfClass ( const UClass ClassToLookFor,
TArray< UObject * > &  Results,
bool  bIncludeDerivedClasses = true,
EObjectFlags  ExcludeFlags = RF_ClassDefaultObject,
EInternalObjectFlags  ExclusionInternalFlags = EInternalObjectFlags::None 
)

Returns an array of objects of a specific class. Optionally, results can include objects of derived classes as well.

Parameters
ClassToLookForClass of the objects to return.
ResultsAn output list of objects of the specified class.
bIncludeDerivedClassesIf true, the results will include objects of child classes as well.
AdditionalExcludeFlagsObjects with any of these flags will be excluded from the results.
ExclusiveInternalFlagsSpecifies internal flags to use as a filter for which objects to return

◆ GetObjectsWithOuter()

void GetObjectsWithOuter ( const class UObjectBase Outer,
TArray< UObject * > &  Results,
bool  bIncludeNestedObjects = true,
EObjectFlags  ExclusionFlags = RF_NoFlags,
EInternalObjectFlags  ExclusionInternalFlags = EInternalObjectFlags::None 
)

Return all objects with a given outer

Parameters
OuterOuter to search for
ResultsReturned results
bIncludeNestedObjectsIf true, then things whose outers directly or indirectly have Outer as an outer are included, these are the nested objects.
ExclusionFlagsSpecifies flags to use as a filter for which objects to return
ExclusiveInternalFlagsSpecifies internal flags to use as a filter for which objects to return

◆ GetObjectsWithPackage()

void GetObjectsWithPackage ( const class UPackage Outer,
TArray< UObject * > &  Results,
bool  bIncludeNestedObjects = true,
EObjectFlags  ExclusionFlags = RF_NoFlags,
EInternalObjectFlags  ExclusionInternalFlags = EInternalObjectFlags::None 
)

Returns an array of all objects found within a given package

Parameters
PackagePackage to search into
ResultsArray to put the results
bIncludeNestedObjectsIf true, then things whose outers directly or indirectly have Outer as an outer are included, these are the nested objects.
ExclusionFlagsSpecifies flags to use as a filter for which objects to return
ExclusiveInternalFlagsSpecifies internal flags to use as a filter for which objects to return

◆ GetRegisteredClassesVersionNumber()

uint64 GetRegisteredClassesVersionNumber ( )

Get a version number representing the current state of registered classes.

Can be stored and then compared to invalidate external caching of classes hierarchy whenever it changes.

◆ GetRegisteredNativeClassesVersionNumber()

uint64 GetRegisteredNativeClassesVersionNumber ( )

Get a version number representing the current state of registered native classes.

Can be stored and then compared to invalidate external caching of native classes hierarchy whenever it changes.

◆ HashObject()

UE_AUTORTFM_NOAUTORTFM void HashObject ( class UObjectBase Object)

Add an object to the name hash tables

Parameters
ObjectObject to add to the hash tables

◆ HashObjectExternalPackage()

void HashObjectExternalPackage ( class UObjectBase Object,
class UPackage Package 
)

Assign an external package directly to an object in the hash tables

Parameters
ObjectObject to assign a package to
PackagePackage to assign, null will call UnhashObjectExternalPackage

◆ LLM_DEFINE_TAG()

LLM_DEFINE_TAG ( UObjectHash  ,
TEXT("UObject hashtables"  
)

◆ LockUObjectHashTables()

void LockUObjectHashTables ( )

Prevents any other threads from finding/adding UObjects (e.g. while GC is running)

◆ LogHashMemoryOverheadStatistics()

void LogHashMemoryOverheadStatistics ( FOutputDevice Ar,
const EObjectMemoryOverheadOptions  InOptions 
)

Logs out information about the total object hash memory usage for debug purposes

Parameters
Arthe archive to write the log data to
InOptionsLogging options

◆ LogHashOuterStatistics()

void LogHashOuterStatistics ( FOutputDevice Ar,
const bool  bShowHashBucketCollisionInfo 
)

Logs out information about the outer object hash for debug purposes

Parameters
Arthe archive to write the log data to
bShowHashBucketCollisionInfowhether to log each bucket's collision count

◆ LogHashStatistics()

void LogHashStatistics ( FOutputDevice Ar,
const bool  bShowHashBucketCollisionInfo 
)

Logs out information about the object hash for debug purposes

Parameters
Arthe archive to write the log data to
bShowHashBucketCollisionInfowhether to log each bucket's collision count

◆ LogHashStatisticsInternal() [1/2]

void LogHashStatisticsInternal ( TBucketMap< int32 > &  Hash,
FOutputDevice Ar,
const bool  bShowHashBucketCollisionInfo 
)

◆ LogHashStatisticsInternal() [2/2]

void LogHashStatisticsInternal ( TMultiMap< int32, uint32 > &  Hash,
FOutputDevice Ar,
const bool  bShowHashBucketCollisionInfo 
)

◆ RemoveFromClassMap()

FORCEINLINE void RemoveFromClassMap ( FUObjectHashTables ThreadHash,
UObjectBase Object 
)

◆ ShrinkUObjectHashTables()

void ShrinkUObjectHashTables ( )

Shrink the UObject hash tables

◆ StaticFindAllObjectsFastInternal()

bool StaticFindAllObjectsFastInternal ( TArray< UObject * > &  OutFoundObjects,
const UClass ObjectClass,
FName  ObjectName,
EFindObjectFlags  Flags = EFindObjectFlags::None,
EObjectFlags  ExcludeFlags = RF_NoFlags,
EInternalObjectFlags  ExclusiveInternalFlags = EInternalObjectFlags::None 
)

Private internal version of StaticFindAllObjectsFast that allows using 0 exclusion flags.

Parameters
OutFoundObjectsArray of objects matching the specified search parameters
ObjectClassThe to be found object's class
ObjectNameThe to be found object's name
bExactClassWhether to require an exact match with the passed in class
ExcludeFlagsIgnores objects that contain any of the specified exclusive flags
ExclusiveInternalFlagsIgnores objects that contain any of the specified internal exclusive flags
Returns
Returns true if any objects were found, false otherwise

If a class was specified, check that the object is of the correct class

Include (or not) pending kill objects

Ensure that the partial path provided matches the object found

◆ StaticFindFirstObjectFastInternal()

UObject * StaticFindFirstObjectFastInternal ( const UClass ObjectClass,
FName  ObjectName,
EFindObjectFlags  Flags = EFindObjectFlags::None,
EObjectFlags  ExcludeFlag = RF_NoFlags,
EInternalObjectFlags  ExclusiveInternalFlags = EInternalObjectFlags::None 
)

Private internal version of StaticFindFirstObject that allows using 0 exclusion flags.

Parameters
ObjectClassThe to be found object's class
ObjectNameThe to be found object's name
bExactClassWhether to require an exact match with the passed in class
ExcludeFlagIgnores objects that contain any of the specified exclusive flags
ExclusiveInternalFlagsIgnores objects that contain any of the specified internal exclusive flags
Returns
Returns first object with the specified name and class, null if not found

If a class was specified, check that the object is of the correct class

Include (or not) pending kill objects

Ensure that the partial path provided matches the object found

◆ StaticFindObjectFastExplicit()

UObject * StaticFindObjectFastExplicit ( const UClass ObjectClass,
FName  ObjectName,
const FString &  ObjectPathName,
EFindObjectFlags  Flags,
EObjectFlags  ExcludeFlags 
)

Variation of StaticFindObjectFast that uses explicit path.

Parameters
ObjectClassThe to be found object's class
ObjectNameThe to be found object's class
ObjectPathNameFull path name for the object to search for
ExactClassWhether to require an exact match with the passed in class
ExclusiveFlagsIgnores objects that contain any of the specified exclusive flags
Returns
Returns a pointer to the found object or nullptr if none could be found

◆ StaticFindObjectFastExplicitThreadSafe()

UObject * StaticFindObjectFastExplicitThreadSafe ( FUObjectHashTables ThreadHash,
const UClass ObjectClass,
FName  ObjectName,
const FString &  ObjectPathName,
EFindObjectFlags  Flags,
EObjectFlags  ExcludeFlags 
)

If a class was specified, check that the object is of the correct class

Finally check the explicit path

◆ StaticFindObjectFastInternal() [1/2]

UObject * StaticFindObjectFastInternal ( const UClass Class,
const UObject InOuter,
FName  InName,
EFindObjectFlags  Flags = EFindObjectFlags::None,
EObjectFlags  ExclusiveFlags = RF_NoFlags,
EInternalObjectFlags  ExclusiveInternalFlags = EInternalObjectFlags::None 
)

Private internal version of StaticFindObjectFast that allows using 0 exclusion flags.

Parameters
ClassThe to be found object's class
InOuterThe to be found object's outer
InNameThe to be found object's class
ExactClassWhether to require an exact match with the passed in class
ExclusiveFlagsIgnores objects that contain any of the specified exclusive flags
ExclusiveInternalFlagsIgnores objects that contain any of the specified internal exclusive flags
Returns
Returns a pointer to the found object or NULL if none could be found

◆ StaticFindObjectFastInternal() [2/2]

UObject * StaticFindObjectFastInternal ( FRemoteObjectId  RemoteId,
EObjectFlags  InExclusiveFlags = RF_NoFlags,
EInternalObjectFlags  InExlusiveInternalFlags = EInternalObjectFlags::None 
)

Variation of StaticFindObjectFastInternal that uses remote id.

Parameters
RemoteIdThe to be found object's remote id
InExclusiveFlagsIgnores objects that contain any of the specified exclusive flags
InExlusiveInternalFlagsIgnores objects that contain any of the specified internal exclusive flags
Returns
Returns a pointer to the found object or NULL if none could be found

◆ StaticFindObjectFastInternalThreadSafe() [1/2]

UObject * StaticFindObjectFastInternalThreadSafe ( FUObjectHashTables ThreadHash,
const UClass ObjectClass,
const UObject ObjectPackage,
FName  ObjectName,
EFindObjectFlags  Flags,
EObjectFlags  ExcludeFlags,
EInternalObjectFlags  ExclusiveInternalFlags 
)

If a class was specified, check that the object is of the correct class

Include (or not) pending kill objects

If a class was specified, check that the object is of the correct class

Include (or not) pending kill objects

Ensure that the partial path provided matches the object found

◆ StaticFindObjectFastInternalThreadSafe() [2/2]

UObject * StaticFindObjectFastInternalThreadSafe ( FUObjectHashTables ThreadHash,
FRemoteObjectId  RemoteId,
EObjectFlags  InExclusiveFlags,
EInternalObjectFlags  InExlusiveInternalFlags 
)

◆ StaticFindObjectInPackageInternal()

UObject * StaticFindObjectInPackageInternal ( FUObjectHashTables ThreadHash,
const UClass ObjectClass,
const UPackage ObjectPackage,
FName  ObjectName,
EFindObjectFlags  Flags,
EObjectFlags  ExcludeFlags,
EInternalObjectFlags  ExclusiveInternalFlags 
)

Do not return ourselves (Packages currently have themselves as their package. )

If a class was specified, check that the object is of the correct class

Include (or not) pending kill objects

◆ UnhashObject()

UE_AUTORTFM_NOAUTORTFM void UnhashObject ( UObjectBase Object)

Remove an object to the name hash tables

Parameters
ObjectObject to remove from the hash tables

◆ UnhashObjectExternalPackage()

void UnhashObjectExternalPackage ( class UObjectBase Object)

Assign an external package directly to an object in the hash tables

Parameters
ObjectObject to unassign a package from

◆ UnlockUObjectHashTables()

void UnlockUObjectHashTables ( )

Releases UObject hash tables lock (e.g. after GC has finished running)

Variable Documentation

◆ GUObjectArray

FUObjectArray GUObjectArray

Global UObject allocator