UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UserDefinedStruct.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_5
6#include "CoreMinimal.h"
8#endif // UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_5
9#include "Misc/Guid.h"
10#include "UObject/Class.h"
16
17#include "UserDefinedStruct.generated.h"
18
22
24
25UENUM()
39
58
59UCLASS(MinimalAPI)
61{
63
64public:
65#if WITH_EDITORONLY_DATA
69
70 UPROPERTY()
71 FString ErrorMessage;
72
73 UPROPERTY()
75#endif // WITH_EDITORONLY_DATA
76
78 UPROPERTY()
80
82 UPROPERTY(AssetRegistrySearchable)
84
87 FUserStructOnScopeIgnoreDefaults DefaultStructInstance;
88
90 bool bIgnoreStructDefaults;
91
92public:
93#if WITH_EDITOR
94 // UObject interface.
95 COREUOBJECT_API virtual void PostDuplicate(bool bDuplicateForPIE) override;
96 COREUOBJECT_API virtual void GetAssetRegistryTags(FAssetRegistryTagsContext Context) const override;
97 UE_DEPRECATED(5.4, "Implement the version that takes FAssetRegistryTagsContext instead.")
98 COREUOBJECT_API virtual void GetAssetRegistryTags(TArray<FAssetRegistryTag>& OutTags) const override;
100 COREUOBJECT_API virtual void PreSaveRoot(FObjectPreSaveRootContext ObjectSaveContext) override;
101 COREUOBJECT_API virtual void PostSaveRoot(FObjectPostSaveRootContext ObjectSaveContext) override;
102 // End of UObject interface.
103
106
107 COREUOBJECT_API virtual void OnChanged();
108
110#endif // WITH_EDITOR
111
112 // UObject interface.
113 COREUOBJECT_API virtual void Serialize(FStructuredArchive::FRecord Record) override;
114 COREUOBJECT_API virtual void SerializeTaggedProperties(FStructuredArchive::FSlot Slot, uint8* Data, const UStruct* DefaultsStruct, const uint8* Defaults, const UObject* BreakRecursionIfFullyLoad = nullptr) const override;
115 COREUOBJECT_API virtual FString GetAuthoredNameForField(const FField* Field) const override;
116 // End of UObject interface.
117
118 // UScriptStruct interface.
119 COREUOBJECT_API virtual void InitializeStruct(void* Dest, int32 ArrayDim = 1) const override;
120 COREUOBJECT_API virtual uint32 GetStructTypeHash(const void* Src) const override;
121 COREUOBJECT_API virtual void RecursivelyPreload() override;
122 COREUOBJECT_API virtual FGuid GetCustomGuid() const override;
123 COREUOBJECT_API virtual FString GetStructCPPName(uint32 CPPExportFlags) const override;
124 COREUOBJECT_API virtual FProperty* CustomFindProperty(const FName Name) const override;
125 COREUOBJECT_API virtual void PrepareCppStructOps() override;
126 // End of UScriptStruct interface.
127
129 COREUOBJECT_API const uint8* GetDefaultInstance() const;
130
132 COREUOBJECT_API void InitializeStructIgnoreDefaults(void* Dest, int32 ArrayDim = 1) const;
133
135 static COREUOBJECT_API uint32 GetUserDefinedStructTypeHash(const void* Src, const UScriptStruct* Type);
136
138 static COREUOBJECT_API void AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector);
139
141 COREUOBJECT_API void UpdateStructFlags();
142
143#if WITH_EDITORONLY_DATA
144 UE_FORCEINLINE_HINT FOnStructChanged& OnStructChanged() { return ChangedEvent; }
145public:
146 FOnStructChanged ChangedEvent;
147
148protected:
150
151private:
152 COREUOBJECT_API UStructCookedMetaData* NewCookedMetaData();
153 COREUOBJECT_API const UStructCookedMetaData* FindCookedMetaData();
154 COREUOBJECT_API void PurgeCookedMetaData();
155
156 UPROPERTY()
158#endif // WITH_EDITORONLY_DATA
159};
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
EUserDefinedStructureStatus
Definition UserDefinedStruct.h:27
@ UDSS_Dirty
Definition UserDefinedStruct.h:31
@ UDSS_Duplicate
Definition UserDefinedStruct.h:35
@ UDSS_Error
Definition UserDefinedStruct.h:33
@ UDSS_UpToDate
Definition UserDefinedStruct.h:29
@ UDSS_MAX
Definition UserDefinedStruct.h:37
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition AssetRegistryTagsContext.h:98
Definition Field.h:556
Definition NameTypes.h:617
Definition ObjectSaveContext.h:554
Definition ObjectSaveContext.h:535
Definition UnrealType.h:174
Definition UObjectGlobals.h:2492
Definition StructOnScope.h:13
Definition StructuredArchiveSlots.h:144
Definition StructuredArchiveSlots.h:52
Definition UserDefinedStruct.h:42
FUserStructOnScopeIgnoreDefaults()
Definition UserDefinedStruct.h:45
virtual COREUOBJECT_API void Initialize() override
Definition UserDefinedStruct.cpp:42
Definition Array.h:670
Definition EnumAsByte.h:22
Definition SubclassOf.h:30
Definition Object.h:95
Definition Class.h:1720
Definition CookedMetaData.h:145
Definition Class.h:480
Definition UserDefinedStruct.h:61
Definition FieldSystemNoiseAlgo.cpp:6
Definition Guid.h:109
Definition ObjectPtr.h:488
Definition WeakObjectPtrTemplates.h:25
Definition Object.h:827