UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AxisPositionGizmo.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
7#include "CoreMinimal.h"
8#include "InputState.h"
9#include "InteractiveGizmo.h"
11#include "Math/MathFwd.h"
12#include "Math/Ray.h"
13#include "Math/Vector.h"
14#include "Templates/Function.h"
16#include "UObject/ObjectPtr.h"
19
20#include "AxisPositionGizmo.generated.h"
21
28class UObject;
30namespace UE::GizmoUtil
31{
32 struct FTransformSubGizmoCommonParams;
33 struct FTransformSubGizmoSharedState;
34}
35
36UCLASS(MinimalAPI)
38{
40
41public:
42 INTERACTIVETOOLSFRAMEWORK_API virtual UInteractiveGizmo* BuildGizmo(const FToolBuilderState& SceneState) const override;
43};
44
45
62UCLASS(MinimalAPI)
64{
66
67public:
72 INTERACTIVETOOLSFRAMEWORK_API bool InitializeAsTranslateGizmo(
79 INTERACTIVETOOLSFRAMEWORK_API bool InitializeAsScaleGizmo(
81 bool bDisallowNegativeScaling,
83
84 // UInteractiveGizmo overrides
85
86 INTERACTIVETOOLSFRAMEWORK_API virtual void Setup() override;
87
88 // IClickDragBehaviorTarget implementation
89
90 INTERACTIVETOOLSFRAMEWORK_API virtual FInputRayHit CanBeginClickDragSequence(const FInputDeviceRay& PressPos) override;
91 INTERACTIVETOOLSFRAMEWORK_API virtual void OnClickPress(const FInputDeviceRay& PressPos) override;
92 INTERACTIVETOOLSFRAMEWORK_API virtual void OnClickDrag(const FInputDeviceRay& DragPos) override;
93 INTERACTIVETOOLSFRAMEWORK_API virtual void OnClickRelease(const FInputDeviceRay& ReleasePos) override;
94 INTERACTIVETOOLSFRAMEWORK_API virtual void OnTerminateDragSequence() override;
95
96 // IHoverBehaviorTarget implementation
97 INTERACTIVETOOLSFRAMEWORK_API virtual FInputRayHit BeginHoverSequenceHitTest(const FInputDeviceRay& PressPos) override;
98 INTERACTIVETOOLSFRAMEWORK_API virtual void OnBeginHover(const FInputDeviceRay& DevicePos) override;
99 INTERACTIVETOOLSFRAMEWORK_API virtual bool OnUpdateHover(const FInputDeviceRay& DevicePos) override;
100 INTERACTIVETOOLSFRAMEWORK_API virtual void OnEndHover() override;
101
102
103public:
104
105 // The below properties can be manipulated for more fine-grained control, but typically it is sufficient
106 // to use one of the initialization methods above.
107
109 UPROPERTY()
111
113 UPROPERTY()
115
116 UE_DEPRECATED(5.5, "UAxisPositionGizmo does not use GizmoViewContext itself (it is used in gizmo components for hit testing).")
117 UPROPERTY()
118 TObjectPtr<UGizmoViewContext> GizmoViewContext;
119
121 UPROPERTY()
123
125 UPROPERTY()
127
129 UPROPERTY()
131
132
133public:
135 UPROPERTY()
136 bool bEnableSignedAxis = false;
137
142 TUniqueFunction<bool()> ShouldUseCustomDestinationFunc = []() {return false; };
143
145 {
146 // Right now we use the custom destination function for aligning to items in the scene, which
147 // we just need the world ray for. If we want to use functions that use other inputs as the
148 // basis for the destination (for instance, just the line parameter), we would add those
149 // parameters here and would make sure that the gizmo passes them in.
150 const FRay* WorldRay = nullptr;
151 };
152
160 TUniqueFunction<bool(const FCustomDestinationParams& WorldRay, FVector& OutputPoint)> CustomDestinationFunc =
161 [](const FCustomDestinationParams& Params, FVector& OutputPoint) { return false; };
162
171 bool bCustomDestinationAlignsAxisOrigin = true;
172
173public:
175 UPROPERTY()
176 bool bInInteraction = false;
177
178
179 //
180 // The values below are used in the context of a single click-drag interaction, ie if bInInteraction = true
181 // They otherwise should be considered uninitialized
182 //
183
184 UPROPERTY()
185 FVector InteractionOrigin;
186
187 UPROPERTY()
188 FVector InteractionAxis;
189
190 UPROPERTY()
191 FVector InteractionStartPoint;
192
193 UPROPERTY()
194 FVector InteractionCurPoint;
195
196 UPROPERTY()
197 float InteractionStartParameter;
198
199 UPROPERTY()
200 float InteractionCurParameter;
201
202 UPROPERTY()
203 float ParameterSign = 1.0f;
204
206 FVector LastHitPosition;
207 float InitialTargetParameter;
208
209 float InteractionStartAxisOriginParameterOffset = 0;
210};
211
#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
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition BehaviorTargetInterfaces.h:91
Definition GizmoInterfaces.h:64
Definition GizmoInterfaces.h:108
Definition GizmoInterfaces.h:301
Definition GizmoInterfaces.h:272
Definition BehaviorTargetInterfaces.h:230
Definition ScriptInterface.h:139
Definition FunctionFwd.h:19
Definition AxisPositionGizmo.h:38
Definition AxisPositionGizmo.h:64
Definition ClickDragBehavior.h:33
Definition GizmoViewContext.h:20
Definition InteractiveGizmoBuilder.h:19
Definition InteractiveGizmo.h:29
Definition Object.h:95
Definition FreeRotationSubGizmo.h:18
@ false
Definition radaudio_common.h:23
Definition InputState.h:367
Definition InputState.h:52
Definition ToolContextInterfaces.h:50
Definition ObjectPtr.h:488
Definition AxisPositionGizmo.h:145
Definition TransformSubGizmoUtil.h:37
Definition TransformSubGizmoUtil.h:99