14#include "CoreMinimal.h"
21 template <
typename T,
typename... Args>
24 t->Initialize(args...);
39 UObject* Outer = (UObject*)GetTransientPackage();
48 FName Name = NAME_None;
54 EObjectFlags Flags = RF_NoFlags;
60 EInternalObjectFlags InternalSetFlags = EInternalObjectFlags::None;
66 bool bCopyTransientsFromClassDefaults =
false;
69 bool bAssumeTemplateIsArchetype =
false;
76 UObject* Template =
nullptr;
79 FObjectInstancingGraph* InstanceGraph =
nullptr;
82 UPackage* ExternalPackage =
nullptr;
90 template <CUObject T,
typename... Args>
93 template <CUObject T,
typename... Args>
97 object->Initialize(
FWD(args)...);
113 template <CUObject T,
typename... Args>
116 T* result = NewObject<T>(
118 params.Class ? params.Class : T::StaticClass(),
122 params.bCopyTransientsFromClassDefaults,
123 params.InstanceGraph,
124 params.ExternalPackage
155 CFunctorObject Initializer,
157 CUObject T = std::decay_t<TArg>
159 requires std::is_lvalue_reference_v<TArg>
162 T* result = NewObject<T>(
164 params.Class ? params.Class : T::StaticClass(),
168 params.bCopyTransientsFromClassDefaults,
169 params.InstanceGraph,
170 params.ExternalPackage
205 CFunctorObject Initializer,
208 CUObject T = std::decay_t<TArg>
210 requires std::is_lvalue_reference_v<TArg>
213 T* result = NewObject<T>(
215 params.Class ? params.Class : T::StaticClass(),
219 params.bCopyTransientsFromClassDefaults,
220 params.InstanceGraph,
221 params.ExternalPackage
#define FWD(...)
Shorten forwarding expression with this macro so one may not need to specify explicit type.
typename TFunctionTraits< std::decay_t< T > >::template Arg< I > TFunction_Arg
Shorthand for getting a type of a function argument at given position I.
void InitObject(T *object, Args &&... args)
T * ConstructObject(FConstructObjectParameters &¶ms, Initializer &&init)
Equivalent to Mcro::Construct::Construct but for UObjects.
T * ConstructInit(FConstructObjectParameters &¶ms, Initializer &&init, Args &&... args)
Equivalent to Mcro::Construct::Construct but for UObjects. If the constructed UObject type also has a...
T * NewInit(FConstructObjectParameters &¶ms, Args &&... args)
Create a new object which can also be initialized with an Initialize function if it has one....
Mirror of FStaticConstructObjectParameters but it's a plain C++ object and doesn't have a constructor...
TFunction< void()> PropertyInitCallback
Callback for custom code to initialize properties before PostInitProperties runs.
const UClass * Class
The class of the object to create.