UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ToolContextInterfaces.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Containers/Array.h"
7#include "CoreMinimal.h"
8#include "Elements/Framework/TypedElementSelectionSet.h" // For deprecated FToolBuilderState::TypedElementSelectionSet member
9#include "Math/Quat.h"
10#include "Math/Rotator.h"
11#include "Math/UnrealMathSSE.h"
12#include "Math/Vector.h"
13#include "Misc/EnumClassFlags.h"
14#include "Templates/UniquePtr.h"
15#include "UObject/Interface.h"
21
22#include "ToolContextInterfaces.generated.h"
23
24// predeclarations so we don't have to include these in all tools
25class AActor;
27class FSceneView;
28class FText;
30class FViewport;
31class SWidget;
32class UActorComponent;
36class UObject;
39
40class UWorld;
41struct FMeshDescription;
43
76
77
83{
89 float HorizontalFOVDegrees = 90;
91 float OrthoWorldCoordinateWidth = 100;
93 float AspectRatio = 1;
95 bool bIsOrthographic = false;
97 bool bIsVR = false;
99 double DPIScale = 1.0;
100
102 FVector Right() const { return Orientation.GetAxisY(); }
104 FVector Up() const { return Orientation.GetAxisZ(); }
106 FVector Forward() const { return Orientation.GetAxisX(); }
107
109 float GetPDIScalingFactor() const { return HorizontalFOVDegrees / 90.0f; }
110
112 float GetFOVAngleNormalizationFactor() const { return HorizontalFOVDegrees / 90.0f; }
113
114};
115
116
117
119UENUM()
125
126
128UENUM()
130{
132 World = 0,
134 Local = 1,
136 Screen = 2
137};
138
139
145UENUM()
147{
149 NoGizmo = 0,
151 Translation = 1,
153 Rotation = 2,
155 Scale = 3,
157 Combined = 8
158};
159
160
161
166{
168 bool bEnablePositionGridSnapping = false;
170 FVector PositionGridDimensions = FVector::Zero();
171
173 bool bEnableRotationGridSnapping = false;
175 FRotator RotationGridAngles = FRotator::ZeroRotator;
176
178 bool bEnableScaleGridSnapping = false;
180 float ScaleGridSize = 1.0f;
181
183 bool bEnableAbsoluteWorldSnapping = false;
184};
185
186
191UCLASS(MinimalAPI)
193{
195
196private:
197 EMouseCursor::Type CursorOverrideShape;
198 TSharedPtr<SWidget> CursorOverrideWidget;
199 bool bIsCursorOverridden;
200
201public:
202
204 {
205 CursorOverrideShape = EMouseCursor::Default;
206 CursorOverrideWidget = nullptr;
207 bIsCursorOverridden = false;
208 }
209
210 virtual ~UToolsContextCursorAPI() override = default;
211
213 {
214 return CursorOverrideShape;
215 }
216
218 {
219 return CursorOverrideWidget;
220 }
221
222 virtual bool IsCursorOverridden() const
223 {
224 return bIsCursorOverridden;
225 }
226
228 {
229 bIsCursorOverridden = true;
230 CursorOverrideShape = CursorOverride;
231 }
232
234 {
235 bIsCursorOverridden = true;
236 CursorOverrideShape = EMouseCursor::Custom;
237 CursorOverrideWidget = InCursorOverrideWidget;
238 }
239
241 virtual void ClearCursorOverride()
242 {
243 bIsCursorOverridden = false;
244 CursorOverrideShape = EMouseCursor::Default;
245 CursorOverrideWidget = nullptr;
246 }
247};
248
307
308
309
310
312UENUM()
314{
316 Internal = 0,
318 UserMessage = 1,
322 UserWarning = 3,
324 UserError = 4
325};
326
327
329UENUM()
331{
332 Replace = 0,
333 Add = 1,
334 Remove = 2,
335 Clear = 3
336};
337
338
349
350UE_DEPRECATED(5.4, "Use FSelectedObjectsChangeList instead")
352
353
360{
361public:
363
369 virtual void DisplayMessage(const FText& Message, EToolMessageLevel Level) = 0;
370
377 virtual void PostInvalidation() = 0;
378
384 virtual void BeginUndoTransaction(const FText& Description) = 0;
385
389 virtual void EndUndoTransaction() = 0;
390
399 virtual void AppendChange(UObject* TargetObject, TUniquePtr<FToolCommandChange> Change, const FText& Description) = 0;
400
401
402
409
410};
411
412UENUM()
414 None = 0,
415 Hovered = 1,
416 Focused = 2
417};
419
443
@ ForceInit
Definition CoreMiscDefines.h:155
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
#define FVector
Definition IOSSystemIncludes.h:8
UE::Math::TQuat< double > FQuat
Definition MathFwd.h:50
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
EToolContextTransformGizmoMode
Definition ToolContextInterfaces.h:147
EToolContextCoordinateSystem
Definition ToolContextInterfaces.h:130
EStandardToolContextMaterials
Definition ToolContextInterfaces.h:121
ESelectedObjectsModificationType
Definition ToolContextInterfaces.h:331
EViewInteractionState
Definition ToolContextInterfaces.h:413
EToolMessageLevel
Definition ToolContextInterfaces.h:314
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Actor.h:257
Definition PrimitiveDrawInterface.h:19
Definition SceneView.h:1425
Definition Text.h:385
Definition InteractiveToolChange.h:18
Definition UnrealClient.h:412
Definition ToolContextInterfaces.h:254
virtual FViewport * GetHoveredViewport() const =0
virtual EToolContextTransformGizmoMode GetCurrentTransformGizmoMode() const
Definition ToolContextInterfaces.h:283
virtual void GetCurrentViewState(FViewCameraState &StateOut) const =0
virtual FToolContextSnappingConfiguration GetCurrentSnappingSettings() const
Definition ToolContextInterfaces.h:288
virtual EToolContextCoordinateSystem GetCurrentCoordinateSystem() const
Definition ToolContextInterfaces.h:278
virtual UWorld * GetCurrentEditingWorld() const =0
virtual ~IToolsContextQueriesAPI()
Definition ToolContextInterfaces.h:256
virtual FViewport * GetFocusedViewport() const =0
virtual void GetCurrentSelectionState(FToolBuilderState &StateOut) const =0
virtual UMaterialInterface * GetStandardMaterial(EStandardToolContextMaterials MaterialType) const =0
Definition ToolContextInterfaces.h:427
virtual FViewCameraState GetCameraState()=0
virtual ~IToolsContextRenderAPI()
Definition ToolContextInterfaces.h:429
virtual const FSceneView * GetSceneView()=0
virtual EViewInteractionState GetViewInteractionState()=0
virtual FPrimitiveDrawInterface * GetPrimitiveDrawInterface()=0
Definition ToolContextInterfaces.h:360
virtual void PostInvalidation()=0
virtual void BeginUndoTransaction(const FText &Description)=0
virtual void EndUndoTransaction()=0
virtual void AppendChange(UObject *TargetObject, TUniquePtr< FToolCommandChange > Change, const FText &Description)=0
virtual void DisplayMessage(const FText &Message, EToolMessageLevel Level)=0
virtual ~IToolsContextTransactionsAPI()
Definition ToolContextInterfaces.h:362
virtual bool RequestSelectionChange(const FSelectedObjectsChangeList &SelectionChange)=0
Definition SWidget.h:165
Definition Array.h:670
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition UniquePtr.h:107
Definition ActorComponent.h:152
Definition InteractiveGizmoManager.h:40
Definition InteractiveToolManager.h:79
Definition MaterialInterface.h:296
Definition Object.h:95
Definition ToolTargetManager.h:37
Definition ToolContextInterfaces.h:193
virtual void SetCursorOverrideWidget(const TSharedRef< SWidget > &InCursorOverrideWidget)
Definition ToolContextInterfaces.h:233
virtual ~UToolsContextCursorAPI() override=default
UToolsContextCursorAPI()
Definition ToolContextInterfaces.h:203
virtual void SetCursorOverride(EMouseCursor::Type CursorOverride)
Definition ToolContextInterfaces.h:227
virtual bool IsCursorOverridden() const
Definition ToolContextInterfaces.h:222
virtual EMouseCursor::Type GetCurrentCursorOverride() const
Definition ToolContextInterfaces.h:212
virtual TSharedPtr< SWidget > GetCurrentCursorOverrideWidget() const
Definition ToolContextInterfaces.h:217
virtual void ClearCursorOverride()
Definition ToolContextInterfaces.h:241
Definition TypedElementSelectionSet.h:180
Definition World.h:918
Type
Definition ICursor.h:18
@ Custom
Definition ICursor.h:62
@ Default
Definition ICursor.h:23
Definition ByteSwap.h:14
Definition MeshDescription.h:94
Definition ToolContextInterfaces.h:341
ESelectedObjectsModificationType ModificationType
Definition ToolContextInterfaces.h:343
TArray< UActorComponent * > Components
Definition ToolContextInterfaces.h:347
TArray< AActor * > Actors
Definition ToolContextInterfaces.h:345
Definition ToolContextInterfaces.h:50
TArray< AActor * > SelectedActors
Definition ToolContextInterfaces.h:61
TArray< UActorComponent * > SelectedComponents
Definition ToolContextInterfaces.h:63
UInteractiveToolManager * ToolManager
Definition ToolContextInterfaces.h:54
UWorld * World
Definition ToolContextInterfaces.h:52
TWeakObjectPtr< UTypedElementSelectionSet > TypedElementSelectionSet
Definition ToolContextInterfaces.h:66
UToolTargetManager * TargetManager
Definition ToolContextInterfaces.h:56
UInteractiveGizmoManager * GizmoManager
Definition ToolContextInterfaces.h:58
Definition ToolContextInterfaces.h:166
Definition TypedElementHandle.h:18
Definition ToolContextInterfaces.h:83
float GetFOVAngleNormalizationFactor() const
Definition ToolContextInterfaces.h:112
FVector Right() const
Definition ToolContextInterfaces.h:102
float GetPDIScalingFactor() const
Definition ToolContextInterfaces.h:109
FVector Up() const
Definition ToolContextInterfaces.h:104
FVector Forward() const
Definition ToolContextInterfaces.h:106
Definition WeakObjectPtrTemplates.h:25
static CORE_API const TRotator< double > ZeroRotator
Definition Rotator.h:57
static TVector< double > Zero()
Definition Vector.h:112