UObjectBaseUtility 继承于 UObjectBase
class COREUOBJECT_API UObjectBaseUtility : public UObjectBase
{
public:
// Constructors.
UObjectBaseUtility() {}
UObjectBaseUtility( EObjectFlags InFlags )
: UObjectBase(InFlags)
{
}
/***********************/
/******** Flags ********/
/***********************/
/** Flags 相关*/
/** 设置flags*/
FORCEINLINE void SetFlags( EObjectFlags NewFlags )
{
checkSlow(!(NewFlags & (RF_MarkAsNative | RF_MarkAsRootSet))); // These flags can't be used outside of constructors / internal code
SetFlagsTo(GetFlags() | NewFlags);
}
/** 清除flags*/
FORCEINLINE void ClearFlags( EObjectFlags NewFlags )
{
checkSlow(!(NewFlags & (RF_MarkAsNative | RF_MarkAsRootSet)) || NewFlags == RF_AllFlags); // These flags can't be used outside of constructors / internal code
SetFlagsTo(GetFlags() & ~NewFlags);
}
/** 用于安全检查是否设置了任何传入的Flags。*/
FORCEINLINE bool HasAnyFlags( EObjectFlags FlagsToCheck ) const
{
checkSlow(!(FlagsToCheck & (RF_MarkAsNative | RF_MarkAsRootSet)) || FlagsToCheck == RF_AllFlags); // These flags can't be used outside of constructors / internal code
return (GetFlags() & FlagsToCheck) != 0;
}
/** 用于安全检查是否设置了任何所有传入的Flags。*/
FORCEINLINE bool HasAllFlags( EObjectFlags FlagsToCheck ) const
{
checkSlow(!(FlagsToCheck & (RF_MarkAsNative | RF_MarkAsRootSet)) || FlagsToCheck == RF_AllFlags); // These flags can't be used outside of constructors / internal code
return ((GetFlags() & FlagsToCheck) == FlagsToCheck);
}
/** 获取flags的标记 Returns object flags that are both in the mask and set on the object.*/
FORCEINLINE EObjectFlags GetMaskedFlags( EObjectFlags Mask = RF_AllFlags ) const
{
return EObjectFlags(GetFlags() & Mask);
}
/***********************/
/******** Marks ******* UObjectMarks.cpp */
/***********************/
/** mark相关*/
/** 为对象添加mark */
FORCEINLINE voi