UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
VVMVerseStruct.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "CoreMinimal.h"
7#include "UObject/Class.h"
9#include "UObject/Package.h"
14#if WITH_VERSE_VM || defined(__INTELLISENSE__)
18#endif
19
20#include "VVMVerseStruct.generated.h"
21
23class UVerseClass;
24struct FVniTypeDesc;
25namespace Verse
26{
27struct VClass;
28struct VShape;
29} // namespace Verse
30
31UCLASS(MinimalAPI)
33{
35
36 COREUOBJECT_API virtual void Serialize(FArchive& Ar) override;
37
39 COREUOBJECT_API virtual void Link(FArchive& Ar, bool bRelinkExistingProperties) override;
40 COREUOBJECT_API virtual void PreSave(FObjectPreSaveContext ObjectSaveContext) override;
41
42 COREUOBJECT_API virtual uint32 GetStructTypeHash(const void* Src) const override;
43
44public:
45 UVerseStruct() = default;
54
55#if UE_WITH_CONSTINIT_UOBJECT
56 consteval UVerseStruct(
57 UE::CodeGen::ConstInit::FObjectParams ObjectParams,
58 UE::CodeGen::ConstInit::FUFieldParams UFieldParams,
59 UE::CodeGen::ConstInit::FStructParams StructParams,
60 UE::CodeGen::ConstInit::FScriptStructParams ScriptStructParams,
61 UE::CodeGen::ConstInit::FVerseStructParams InVerseParams)
62 : Super(ObjectParams, UFieldParams, StructParams, ScriptStructParams)
64 , VerseClassFlags(VCLASS_UHTNative)
65 , QualifiedName(ConstEval)
67 , IntPropertyConstraints(ConstEval)
68 , DoublePropertyConstraints(ConstEval)
69 {
70 }
71#endif
72#if UE_WITH_CONSTINIT_UOBJECT
73 // CONSTINIT_UOBJECT_TODO: This increases size
74 const UTF8CHAR* CompiledInQualifiedName = nullptr;
75#endif // UE_WITH_CONSTINIT_UOBJECT
76
78 UPROPERTY()
79 uint32 VerseClassFlags = 0;
80
81 UPROPERTY()
82 FUtf8String QualifiedName;
83
84 virtual FGuid GetCustomGuid() const override
85 {
86 return Guid;
87 }
88
90 UPROPERTY()
91 TObjectPtr<UFunction> InitFunction;
92
94 UPROPERTY()
95 TObjectPtr<UVerseClass> ModuleClass;
96
98 UPROPERTY()
100
101 UPROPERTY()
102 TObjectPtr<UFunction> FactoryFunction;
103
104 UPROPERTY()
105 TObjectPtr<UFunction> OverrideFactoryFunction;
106
107 UPROPERTY()
108 EVerseEffectSet ConstructorEffects = EVerseEffectSet::None;
109
110 UPROPERTY()
112
113 UPROPERTY()
115
116#if WITH_VERSE_VM || defined(__INTELLISENSE__)
117 UPROPERTY()
119
120 Verse::VRestValue Shape{0};
121
123 UE::GC::FSchemaOwner ReferenceSchema;
124
125 COREUOBJECT_API void ResetUHTNative();
126 void SetShape(Verse::FAllocationContext Context, Verse::VShape* InShape);
127
128 static COREUOBJECT_API void AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector);
129 COREUOBJECT_API void AssembleReferenceTokenStream(bool bForce = false);
130#endif
131
132 COREUOBJECT_API virtual FString GetAuthoredNameForField(const FField* Field) const override;
133
134 COREUOBJECT_API void InvokeDefaultFactoryFunction(uint8* InStructData) const;
135
136 bool IsNativeBound() const { return (VerseClassFlags & VCLASS_NativeBound) != VCLASS_None; }
137 bool IsUHTNative() const { return (VerseClassFlags & VCLASS_UHTNative) != VCLASS_None; }
138 bool IsTuple() const { return (VerseClassFlags & VCLASS_Tuple) != VCLASS_None; }
139 bool IsParametric() const { return (VerseClassFlags & VCLASS_Parametric) != VCLASS_None; }
140
141 void SetNativeBound() { VerseClassFlags |= VCLASS_NativeBound; }
142
143 const FVniTypeDesc* GetNativeTypeDesc() { return NativeTypeDesc; }
145
146private:
147#if WITH_EDITORONLY_DATA
148 UPROPERTY()
150#endif // WITH_EDITORONLY_DATA
151
152 const FVniTypeDesc* NativeTypeDesc{nullptr};
153};
EStructFlags
Definition Class.h:1023
@ STRUCT_NoFlags
Definition Class.h:1025
@ ConstEval
Definition CoreMiscDefines.h:161
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::UTF8CHAR UTF8CHAR
An 8-bit character containing a UTF8 (Unicode, 8-bit, variable-width) code unit.
Definition Platform.h:1137
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
void SetShape(FPhysTypeDummy &Hit, FPhysTypeDummy *Shape)
Definition PhysInterface_Chaos.h:186
@ VCLASS_NativeBound
Definition VVMVerseClassFlags.h:9
@ VCLASS_None
Definition VVMVerseClassFlags.h:8
@ VCLASS_UHTNative
Definition VVMVerseClassFlags.h:13
@ VCLASS_Parametric
Definition VVMVerseClassFlags.h:21
@ VCLASS_Tuple
Definition VVMVerseClassFlags.h:14
EVerseEffectSet
Definition VVMVerseEffectSet.h:16
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition UnrealType.h:2503
Definition Field.h:556
Definition UnrealType.h:2336
Definition UObjectGlobals.h:1292
Definition ObjectSaveContext.h:244
Definition UObjectGlobals.h:2492
Definition UnrealString.h.inl:34
Definition GarbageCollection.h:65
Definition Class.h:2476
Definition Object.h:95
Definition Class.h:1720
Definition CookedMetaData.h:145
Definition VVMVerseClass.h:137
Definition VVMVerseStruct.h:33
bool IsParametric() const
Definition VVMVerseStruct.h:139
void SetNativeBound()
Definition VVMVerseStruct.h:141
bool IsUHTNative() const
Definition VVMVerseStruct.h:137
UVerseStruct()=default
void SetNativeTypeDesc(const FVniTypeDesc *InNativeTypeDesc)
Definition VVMVerseStruct.h:144
bool IsTuple() const
Definition VVMVerseStruct.h:138
bool IsNativeBound() const
Definition VVMVerseStruct.h:136
const FVniTypeDesc * GetNativeTypeDesc()
Definition VVMVerseStruct.h:143
Definition FieldSystemNoiseAlgo.cpp:6
Definition Archive.h:36
Definition Guid.h:109
Definition VVMVerseConstraints.h:21
Definition VVMVerseConstraints.h:9
Definition VVMVerseNativeTypeDesc.h:31
Definition FieldPath.h:283
Definition ObjectPtr.h:488
Definition Class.h:1725