ФЭНДОМ


AllocateUObjectIndexForCurrentThread Править

Определена в файле UObjectHash.

!TODO!

ConstructObject Править

Определена в файле UObjectGlobals.

template< class T >
T *ConstructObject(
       UClass                 *Class,
       UObject                *Outer                            = (UObject*) GetTransientPackage(),
       FName                   Name                             = NAME_None,
       EObjectFlags            SetFlags                         = RF_NoFlags,
       UObject                *Template                         = NULL,
       bool                    bCopyTransientsFromClassDefaults = false,
       FObjectInstancingGraph *InstanceGraph                    = NULL)

Эта шаблонная функция объявлена устаревшей, начиная с версии UE 4.8. Вместо неё следует использовать функцию NewObject.

GetFullNameSafe Править

Определена в файле UObjectBaseUtility.

FString  GetFullNameSafe(
             const UObjectBaseUtility *Object)

Параметры:

  • Object — объект, чьё имя надо получить.

Эта функция безопасным образом возвращает имя заданного объекта. Безопасность заключается в том, что она проверяет, не передан ли ей нулевой указатель и задан ли класс для указанного объекта. В обоих этих случаях возвращается строка "None", и лишь в случае, если параметр Object отличен от нуля и для него задан класс, вызывается соответствующий метод GetFullName.

GetTransientPackage Править

Определена в файле UObjectGlobals.

UPackage *GetTransientPackage()

!TODO!

HashObject Править

Определена в файле UObjectHash.

!TODO!

MarkObject Править

Определена в файле UObjectMarks.

!TODO!

NewNamedObject Править

Определена в файле UObjectGlobals.

template< class TClass >
TClass *NewNamedObject(
            UObject      *Outer,
            FName         Name,
            EObjectFlags  Flags    = RF_NoFlags,
            UObject      *Template = NULL)

Эта функция, предназначенная для создания экземпляров объектов заданного типа, объявлена устаревшей, начиная с версии 4.8. Вместо неё следует использовать функцию NewObject.

NewObject Править

Определена в файле UObjectGlobals.

template< class T >
T* NewObject(
       UObject                *Outer                            = (UObject*) GetTransientPackage(),
       UClass                 *Class                            = T::StaticClass(),
       FName                   Name                             = NAME_None,
       EObjectFlags            Flags                            = RF_NoFlags,
       UObject                *Template                         = nullptr,
       bool                    bCopyTransientsFromClassDefaults = false,
       FObjectInstancingGraph *InInstanceGraph                  = nullptr)
template< class T >
T* NewObject(
       UObject                *Outer,
       FName                   Name,
       EObjectFlags            Flags                            = RF_NoFlags,
       UObject                *Template                         = nullptr,
       bool                    bCopyTransientsFromClassDefaults = false,
       FObjectInstancingGraph *InInstanceGraph                  = nullptr)

Параметры:

  • T — тип создаваемого объекта;
  • Outer — объект-хозяин создаваемого объекта;
  • Class — класс создаваемого объекта. Вторая форма функции автоматически использует класс, соответствующий типу объекта; для первой функции может быть явно задан другой класс, но он обязательно должен быть потомком класса, соответствующего типу объекта;
  • Name — имя создаваемого объекта. Не допускается задавать пустое имя, если эта функция вызывается из конструктора объекта-хозяина (т.е. функция не может использоваться для создания подобъектов по умолчанию);
  • Flags — флаги создаваемого объекта;
  • Template — объект, который должен использоваться в качестве шаблона при создании нового объекта;
  • bCopyTransientsFromClassDefaults — если равен true, указывает, что значения переходных (transient) свойств необходимо копировать из CDO, а не указанного архетипа;
  • InInstanceGraph — указатель на структуру, содержащую отображение созданных компонентов и объектов на их шаблоны; используется для создания компонентов, которыми владеет новый объект.

Эти шаблонные функции предназначены для создания нового экземпляра объекта заданного типа T. Основную часть работы для них выполняет внутренняя функция StaticConstructObject_Internal.

ObjectHasAllMarks Править

Определена в файле UObjectMarks.

!TODO!

ObjectHasAnyMarks Править

Определена в файле UObjectMarks.

!TODO!

StaticConstructObject Править

Определена в файле UObjectGlobals.

UObject *StaticConstructObject(
             UClass                 *Class,
             UObject                *InOuter                          = (UObject*) GetTransientPackage(),
             FName                   Name                             = NAME_None,
             EObjectFlags            SetFlags                         = RF_NoFlags,
             UObject                *Template                         = NULL,
             bool                    bCopyTransientsFromClassDefaults = false,
             FObjectInstancingGraph *InstanceGraph                    = NULL)

Эта функция объявлена устаревшей; вместо неё следует использовать NewObject, а внутренний код модуля CoreUObject должен пользоваться функцией StaticConstructObject_Internal.

StaticConstructObject_Internal Править

Определена в файле UObjectGlobals.

UObject*  StaticConstructObject_Internal(
             UClass                 *Class,
             UObject                *Outer                            = (UObject*) GetTransientPackage(),
             FName                   Name                             = NAME_None,
             EObjectFlags            SetFlags                         = RF_NoFlags,
             UObject                *Template                         = NULL,
             bool                    bCopyTransientsFromClassDefaults = false,
             FObjectInstancingGraph *InstanceGraph                    = NULL)

Параметры:

  • Class — класс создаваемого объекта;
  • Outer — хозяин данного объекта (объект, внутри которого будет находиться создаваемый объект);
  • Name — имя создаваемого объекта. Если не задано, будет автоматически создано уникальное имя вида "ClassName_#";
  • SetFlags — набор флагов, описывающих создаваемый объект;
  • Template — объект-архетип для данного объекта. Если задан, в новом объекте будет сохранена ссылка на этот объект как на архетип, а свойства нового объекта будут скопированы из объекта-архетипа. Если же архетип не задан, копирование свойств будет выполнено из CDO. Если задан, архетип должен принадлежать к тому же классу, что и создаваемый объект, или к классу-потомку, либо он должен быть CDO;
  • bCopyTransientsFromClassDefaults — если этот параметр равен true, временные свойства будут скопированы из CDO, а не объекта-архетипа;
  • InstanceGraph — указатель на структуру, задающую отображение созданных объектов и компонентов на их шаблоны.

Эта подпрограмма предназначена для использования внутри модуля CoreUObject. Она создаёт новый экземпляр объекта и обеспечивает его полную инициализацию, включая, как правило, создание компонентов объекта. Однако если в параметре SetFlags присутствует флаг RF_NeedsLoad (он указывает, что объект по-прежнему нуждается в загрузке своих данных с диска), компоненты объекта не будут создаваться во время его создания (вместо этого они будут созданы при выполнении метода PostLoad).

Собственно создание объекта выполняется подпрограммой StaticAllocateObject, а подобъекты нового объекта при необходимости создаются вызовом конструктора класса, адрес которого находится в поле Class::ClassConstructor.

При компиляции со сбором статистики общее время выполнения этой функции учитывается как STAT_ConstructObject.

StaticLoadClass Править

UClass *StaticLoadClass(
        UClass      *BaseClass,
        UObject     *InOuter,
        const TCHAR *Name,
        const TCHAR *Filename  = NULL,
        uint32       LoadFlags = LOAD_None,
        UPackageMap *Sandbox   = NULL);

StaticLoadObject Править

UObject *StaticLoadObject(
        UClass      *Class,
        UObject     *InOuter,
        const TCHAR *Name,
        const TCHAR *Filename                   = NULL,
        uint32       LoadFlags                  = LOAD_None,
        UPackageMap *Sandbox                    = NULL,
        bool         bAllowObjectReconciliation = true);

Поиск и загрузка объекта, заданного именем.

Параметры:

  • ObjectClass — класс искомого объекта;
  • InOuter — необязательный объект-«хозяин», определяющий, где выполнять поиск объекта;
  • InName — имя искомого объекта. Если не задано полностью, необходимо указать параметр InOuter или Filename;
  • Filename — необязательное имя файла, из которого должен быть загружен объект;
  • LoadFlags — флаги, управляющие загрузкой объекта;
  • Sandbox — список пакетов, ограничивающих поиск объекта;
  • bAllowObjectReconciliation — разрешено ли искать объект с помощью FindObject.

Возвращается указатель на загруженный объект. Если объект не был найден, возвращается nullptr.

UnhashObject Править

Определена в файле UObjectHash.

!TODO!

UnMarkObject Править

Определена в файле UObjectMarks.

!TODO!

DebugIsClassChildOf_Internal Править

Определена в файле UObjectGlobals.

COREUOBJECT_API bool  DebugIsClassChildOf_Internal(
        UClass  *Parent,
        UClass  *Child);

Возвращает true, если класс Child является потомком класса Parent, и false в противном случае.

UObjectInitialized Править

Определена в файле UObjectBase.

bool  UObjectInitialized()

Эта функция возвращает true, если система объектов уже инициализирована, и false в противном случае.