UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
InteractiveGizmoManager.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "UObject/Object.h"
7#include "InteractiveGizmo.h"
9#include "InputRouter.h"
12#include "InteractiveGizmoManager.generated.h"
13
18
19USTRUCT()
21{
23
24 UPROPERTY()
25 TObjectPtr<UInteractiveGizmo> Gizmo = nullptr;
26 FString BuilderIdentifier;
27 FString InstanceIdentifier;
28 void* Owner = nullptr;
29};
30
31
38UCLASS(Transient, MinimalAPI)
40{
42
43protected:
44 friend class UInteractiveToolsContext; // to call Initialize/Shutdown
45
47
50
53
54public:
55
56 //
57 // GizmoBuilder Registration and Gizmo Creation/Shutdown
58 //
59
65 INTERACTIVETOOLSFRAMEWORK_API virtual void RegisterGizmoType(const FString& BuilderIdentifier, UInteractiveGizmoBuilder* Builder);
66
72 INTERACTIVETOOLSFRAMEWORK_API virtual bool DeregisterGizmoType(const FString& BuilderIdentifier);
73
74
75
83 INTERACTIVETOOLSFRAMEWORK_API virtual UInteractiveGizmo* CreateGizmo(const FString& BuilderIdentifier, const FString& InstanceIdentifier = FString(), void* Owner = nullptr);
84
85
93 template<typename GizmoType>
94 GizmoType* CreateGizmo(const FString& BuilderIdentifier, const FString& InstanceIdentifier = FString(), void* Owner = nullptr)
95 {
96 UInteractiveGizmo* NewGizmo = CreateGizmo(BuilderIdentifier, InstanceIdentifier, Owner);
98 }
99
100
106 INTERACTIVETOOLSFRAMEWORK_API virtual bool DestroyGizmo(UInteractiveGizmo* Gizmo);
107
112 INTERACTIVETOOLSFRAMEWORK_API virtual void DestroyAllGizmosOfType(const FString& BuilderIdentifier);
113
118 INTERACTIVETOOLSFRAMEWORK_API virtual void DestroyAllGizmosByOwner(void* Owner);
119
120
126 INTERACTIVETOOLSFRAMEWORK_API virtual TArray<UInteractiveGizmo*> FindAllGizmosOfType(const FString& BuilderIdentifier);
127
133 INTERACTIVETOOLSFRAMEWORK_API virtual UInteractiveGizmo* FindGizmoByInstanceIdentifier(const FString& Identifier) const;
134
135
136
137
138 //
139 // Functions that Gizmos can call to interact with Transactions API
140 //
141
143 INTERACTIVETOOLSFRAMEWORK_API virtual void DisplayMessage(const FText& Message, EToolMessageLevel Level);
144
146 INTERACTIVETOOLSFRAMEWORK_API virtual void PostInvalidation();
147
152 INTERACTIVETOOLSFRAMEWORK_API virtual void BeginUndoTransaction(const FText& Description);
153
155 INTERACTIVETOOLSFRAMEWORK_API virtual void EndUndoTransaction();
156
163 INTERACTIVETOOLSFRAMEWORK_API virtual void EmitObjectChange(UObject* TargetObject, TUniquePtr<FToolCommandChange> Change, const FText& Description );
164
165
166 //
167 // State control (@todo: have the Context call these? not safe for anyone to call)
168 //
169
171 INTERACTIVETOOLSFRAMEWORK_API virtual void Tick(float DeltaTime);
172
175
178
179 //
180 // access to APIs, etc
181 //
182
184 virtual IToolsContextQueriesAPI* GetContextQueriesAPI() { return QueriesAPI; }
185
189 INTERACTIVETOOLSFRAMEWORK_API UContextObjectStore* GetContextObjectStore() const;
190
191
192
193public:
194 //
195 // Standard Gizmos
196 //
197
201 INTERACTIVETOOLSFRAMEWORK_API virtual void RegisterDefaultGizmos();
202
209 INTERACTIVETOOLSFRAMEWORK_API virtual UCombinedTransformGizmo* Create3AxisTransformGizmo(void* Owner = nullptr, const FString& InstanceIdentifier = FString());
210
218 INTERACTIVETOOLSFRAMEWORK_API virtual UCombinedTransformGizmo* CreateCustomTransformGizmo(ETransformGizmoSubElements Elements, void* Owner = nullptr, const FString& InstanceIdentifier = FString());
219
220 INTERACTIVETOOLSFRAMEWORK_API virtual UCombinedTransformGizmo* CreateCustomRepositionableTransformGizmo(ETransformGizmoSubElements Elements, void* Owner = nullptr, const FString& InstanceIdentifier = FString());
221
222public:
223 // builder identifiers for default gizmo types. Perhaps should have an API for this...
231
232protected:
234 UPROPERTY()
235 TArray<FActiveGizmo> ActiveGizmos;
236
237
243
246
248 UPROPERTY()
249 TMap<FString, TObjectPtr<UInteractiveGizmoBuilder>> GizmoBuilders;
250
251 bool bDefaultGizmosRegistered = false;
253};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ETransformGizmoSubElements
Definition InteractiveGizmo.h:105
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
EToolMessageLevel
Definition ToolContextInterfaces.h:314
Definition CanvasTypes.h:211
Definition CombinedTransformGizmo.h:211
Definition Text.h:385
Definition InteractiveToolChange.h:39
Definition ToolContextInterfaces.h:254
Definition ToolContextInterfaces.h:427
Definition ToolContextInterfaces.h:360
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition UniquePtr.h:107
Definition CombinedTransformGizmo.h:249
Definition CombinedTransformGizmo.h:337
Definition ContextObjectStore.h:25
Definition InputRouter.h:39
Definition InteractiveGizmoBuilder.h:19
Definition InteractiveGizmoManager.h:40
virtual IToolsContextQueriesAPI * GetContextQueriesAPI()
Definition InteractiveGizmoManager.h:184
static INTERACTIVETOOLSFRAMEWORK_API const FString CustomThreeAxisTransformBuilderIdentifier
Definition InteractiveGizmoManager.h:228
static INTERACTIVETOOLSFRAMEWORK_API FString DefaultAxisPositionBuilderIdentifier
Definition InteractiveGizmoManager.h:224
static INTERACTIVETOOLSFRAMEWORK_API FString DefaultThreeAxisTransformBuilderIdentifier
Definition InteractiveGizmoManager.h:227
static INTERACTIVETOOLSFRAMEWORK_API FString DefaultAxisAngleBuilderIdentifier
Definition InteractiveGizmoManager.h:226
static INTERACTIVETOOLSFRAMEWORK_API FString DefaultPlanePositionBuilderIdentifier
Definition InteractiveGizmoManager.h:225
GizmoType * CreateGizmo(const FString &BuilderIdentifier, const FString &InstanceIdentifier=FString(), void *Owner=nullptr)
Definition InteractiveGizmoManager.h:94
static INTERACTIVETOOLSFRAMEWORK_API const FString CustomRepositionableThreeAxisTransformBuilderIdentifier
Definition InteractiveGizmoManager.h:229
static INTERACTIVETOOLSFRAMEWORK_API FString DefaultScalableSphereBuilderIdentifier
Definition InteractiveGizmoManager.h:230
Definition InteractiveGizmo.h:29
Definition InteractiveToolsContext.h:39
TObjectPtr< UInputRouter > InputRouter
Definition InteractiveToolsContext.h:109
Definition Object.h:95
@ false
Definition radaudio_common.h:23
Definition InteractiveGizmoManager.h:21
Definition ObjectPtr.h:488