27 #define RF_AllFlags (EObjectFlags)0xffffffff
59 KR_CORE_ASSERT((NewFlags & ~
RF_AllFlags) == 0,
"%s flagged as 0x%x but is trying to set flags to RF_AllFlags");
60 m_ObjectFlags = NewFlags;
88 UPackage* GetExternalPackage()
const;
96 bool IsUnreachable()
const;
128 uint32_t m_InternalIndex;
142 std::string m_NamePrivate;
145 static bool m_bPendingKillDisabled;
168 void MarkAsGarbage();
185 return m_NamePrivate;
195 m_NamePrivate = aName;
208 return m_OuterPrivate;
243 bool IsValidLowLevel()
const;
261 return m_bPendingKillDisabled ?
277 template <
typename OtherClassType>
286 const UClass* SomeBaseClass = SomeBase;
288 KR_CORE_ASSERT(SomeBaseClass,
"IsA(NULL) cannot yield meaningful results");
294 KR_CORE_ASSERT(ThisClass,
"Couldn't find UClass of {0}. Comparing with null is useless", this->
GetName());
296 return IsChildOfWorkaround(ThisClass, SomeBaseClass);
306 return m_ClassPrivate;
321 KR_CORE_ASSERT((m_ObjectFlags & ~
RF_AllFlags) == 0,
"{0} flagged as RF_ALLFlags",
GetName());
322 return m_ObjectFlags;
366 return (
GetFlags() & FlagsToCheck) != 0;
379 return GUObjectStore.IndexToObject(m_InternalIndex)->HasAnyFlags(FlagsToCheck);
390 FUObjectItem* ObjectItem = GUObjectStore.IndexToObject(m_InternalIndex);
422 static bool IsChildOfWorkaround(
const UClass* ObjClass,
const UClass* TestClass);
#define KARMA_API
Defining Karma's API macro for storage class information.
Definition Core.h:41
#define FORCEINLINE
Typical inlining macro for clarity.
Definition Core.h:157
#define RF_AllFlags
All flags, used mainly for error checking.
Definition UObjectBase.h:27
This file contains some commonly used game code macros.
EObjectFlags
Flags describing an object instance.
Definition UObjectGlobals.h:183
@ RF_MarkAsNative
Object (UField) will be marked as native on construction (DO NOT USE THIS FLAG in HasAnyFlags() etc)
Definition UObjectGlobals.h:192
@ RF_MarkAsRootSet
Object will be marked as root set on construction and not be garbage collected, even if unreferenced ...
Definition UObjectGlobals.h:199
@ RF_PendingKill
Objects that are pending destruction (invalid for gameplay but valid objects). This flag is mirrored ...
Definition UObjectGlobals.h:231
@ RF_Garbage
Garbage from logical point of view and should not be referenced. This flag is mirrored in EInternalOb...
Definition UObjectGlobals.h:232
@ RF_NoFlags
No flags, used to avoid a cast.
Definition UObjectGlobals.h:186
EInternalObjectFlags
Objects flags for internal use (GC, low level UObject code)
Definition UObjectGlobals.h:243
@ PendingKill
Objects that are pending destruction (invalid for gameplay but valid objects). This flag is mirrored ...
Definition UObjectGlobals.h:255
@ Garbage
Garbage from logical point of view and should not be referenced. This flag is mirrored in EObjectFlag...
Definition UObjectGlobals.h:247
An object class.
Definition Class.h:158
Low level implementation of UObject, should not be used directly in game code.
Definition UObjectBase.h:36
FORCEINLINE void SetObjectName(const std::string &aName)
Definition UObjectBase.h:193
FORCEINLINE void SetFlagsTo(EObjectFlags NewFlags)
Definition UObjectBase.h:57
FORCEINLINE const std::string & GetName() const
Definition UObjectBase.h:183
static FORCEINLINE EInternalObjectFlags FixGarbageOrPendingKillInternalObjectFlags(const EInternalObjectFlags InFlags)
Definition UObjectBase.h:251
FORCEINLINE UObject * GetOuter() const
Definition UObjectBase.h:206
FORCEINLINE void ClearFlags(EObjectFlags FlagsToClear)
Definition UObjectBase.h:347
T * GetTypedOuter() const
Definition UObjectBase.h:230
FORCEINLINE UClass * GetClass() const
Definition UObjectBase.h:304
UObject * GetTypedOuter(UClass *Target) const
Definition UObjectBase.cpp:124
FORCEINLINE uint32_t GetInternalIndex() const
Definition UObjectBase.h:110
FORCEINLINE bool HasAnyFlags(EObjectFlags FlagsToCheck) const
Definition UObjectBase.h:363
FORCEINLINE void SetInternalIndex(uint32_t StoreIndex)
Definition UObjectBase.h:103
FORCEINLINE void SetFlags(EObjectFlags NewFlags)
Definition UObjectBase.h:333
FORCEINLINE void SetInternalFlags(EInternalObjectFlags FlagsToSet) const
Definition UObjectBase.h:388
FORCEINLINE EObjectFlags GetFlags() const
Definition UObjectBase.h:319
FORCEINLINE bool IsA(OtherClassType SomeBase) const
Definition UObjectBase.h:278
UObjectBase()
Providing a default constructor.
Definition UObjectBase.cpp:15
FORCEINLINE void AddToRoot()
Definition UObjectBase.h:402
FORCEINLINE bool HasAnyInternalFlags(EInternalObjectFlags FlagsToCheck) const
Definition UObjectBase.h:377
The base class of all the game code relevant objects.
Definition Object.h:106
A generic outer for UObjects, for instance UWorld.
Definition Package.h:23
Single item in UObjectStore.
Definition UObjectGlobals.h:270
FORCEINLINE void SetFlags(EInternalObjectFlags FlagsToSet)
Set the internal flags.
Definition UObjectGlobals.h:307
FORCEINLINE EInternalObjectFlags GetFlags() const
Getter for internal flags.
Definition UObjectGlobals.h:320