UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MeshSurfacePointTool.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"
8#include "InputBehaviorSet.h"
11#include "MeshSurfacePointTool.generated.h"
12
13
14
16
17// This is a temporary interface to provide stylus pressure, currently necessary due to limitations
18// in the stylus plugin architecture. Should be removed once InputState/InputBehavior can support stylus events
20{
21public:
22 virtual float GetCurrentPressure() const = 0;
23};
24
28UCLASS(MinimalAPI)
30{
32
33public:
34 IToolStylusStateProviderAPI* StylusAPI = nullptr;
35
37 INTERACTIVETOOLSFRAMEWORK_API virtual bool CanBuildTool(const FToolBuilderState& SceneState) const override;
38
40 INTERACTIVETOOLSFRAMEWORK_API virtual UInteractiveTool* BuildTool(const FToolBuilderState& SceneState) const override;
41
43 INTERACTIVETOOLSFRAMEWORK_API virtual UMeshSurfacePointTool* CreateNewTool(const FToolBuilderState& SceneState) const;
44
46 INTERACTIVETOOLSFRAMEWORK_API virtual void InitializeNewTool(UMeshSurfacePointTool* Tool, const FToolBuilderState& SceneState) const;
47
48protected:
49 INTERACTIVETOOLSFRAMEWORK_API virtual const FToolTargetTypeRequirements& GetTargetRequirements() const override;
50};
51
52
53
62UCLASS(MinimalAPI)
64{
66
67public:
68 // UInteractiveTool API Implementation
69
71 INTERACTIVETOOLSFRAMEWORK_API virtual void Setup() override;
72
74 INTERACTIVETOOLSFRAMEWORK_API virtual void SetStylusAPI(IToolStylusStateProviderAPI* StylusAPI);
75
76 // UMeshSurfacePointTool API
77
81 INTERACTIVETOOLSFRAMEWORK_API virtual bool HitTest(const FRay& Ray, FHitResult& OutHit);
82
86 INTERACTIVETOOLSFRAMEWORK_API virtual void OnBeginDrag(const FRay& Ray);
87
91 INTERACTIVETOOLSFRAMEWORK_API virtual void OnUpdateDrag(const FRay& Ray);
92
96 INTERACTIVETOOLSFRAMEWORK_API virtual void OnEndDrag(const FRay& Ray);
97
101 virtual void OnCancelDrag() {}
102
103
104 // IClickDragBehaviorTarget implementation
105 INTERACTIVETOOLSFRAMEWORK_API virtual FInputRayHit CanBeginClickDragSequence(const FInputDeviceRay& PressPos) override;
106 INTERACTIVETOOLSFRAMEWORK_API virtual void OnClickPress(const FInputDeviceRay& PressPos) override;
107 INTERACTIVETOOLSFRAMEWORK_API virtual void OnClickDrag(const FInputDeviceRay& DragPos) override;
108 INTERACTIVETOOLSFRAMEWORK_API virtual void OnClickRelease(const FInputDeviceRay& ReleasePos) override;
109 INTERACTIVETOOLSFRAMEWORK_API virtual void OnTerminateDragSequence() override;
110 INTERACTIVETOOLSFRAMEWORK_API virtual void OnUpdateModifierState(int ModifierID, bool bIsOn) override;
111
112
113 // IHoverBehaviorTarget implementation
114
115 INTERACTIVETOOLSFRAMEWORK_API virtual FInputRayHit BeginHoverSequenceHitTest(const FInputDeviceRay& PressPos) override;
116 virtual void OnBeginHover(const FInputDeviceRay& DevicePos) override {}
117 virtual bool OnUpdateHover(const FInputDeviceRay& DevicePos) override { return true; }
118 virtual void OnEndHover() override {}
119
120
121 // IInteractiveToolCameraFocusAPI implementation
122 INTERACTIVETOOLSFRAMEWORK_API virtual bool GetWorldSpaceFocusPoint(const FRay& WorldRay, FVector& PointOut) override;
123
124
126 INTERACTIVETOOLSFRAMEWORK_API virtual void SetShiftToggle(bool bShiftDown);
127
129 virtual bool GetShiftToggle() const { return bShiftToggle; }
130
132 INTERACTIVETOOLSFRAMEWORK_API virtual void SetCtrlToggle(bool bCtrlDown);
133
135 virtual bool GetCtrlToggle() const { return bCtrlToggle; }
136
138 INTERACTIVETOOLSFRAMEWORK_API virtual float GetCurrentDevicePressure() const;
139
141 INTERACTIVETOOLSFRAMEWORK_API UWorld* GetTargetWorld();
142
143protected:
145 bool bShiftToggle = false;
146
148 bool bCtrlToggle = false;
149
151
152 IToolStylusStateProviderAPI* StylusAPI = nullptr;
153
154 UPROPERTY()
155 TWeakObjectPtr<UWorld> TargetWorld = nullptr;
156
157 static constexpr int ShiftModifier = 1;
158 static constexpr int CtrlModifier = 2;
159};
160
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
Definition ToolTarget.h:54
Definition BehaviorTargetInterfaces.h:91
Definition BehaviorTargetInterfaces.h:230
Definition MeshSurfacePointTool.h:20
virtual float GetCurrentPressure() const =0
Definition InteractiveToolBuilder.h:87
Definition InteractiveTool.h:364
Definition MeshSurfacePointTool.h:30
Definition MeshSurfacePointTool.h:64
virtual bool OnUpdateHover(const FInputDeviceRay &DevicePos) override
Definition MeshSurfacePointTool.h:117
virtual bool GetShiftToggle() const
Definition MeshSurfacePointTool.h:129
virtual bool GetCtrlToggle() const
Definition MeshSurfacePointTool.h:135
virtual void OnEndHover() override
Definition MeshSurfacePointTool.h:118
virtual void OnBeginHover(const FInputDeviceRay &DevicePos) override
Definition MeshSurfacePointTool.h:116
virtual void OnCancelDrag()
Definition MeshSurfacePointTool.h:101
FRay LastWorldRay
Definition MeshSurfacePointTool.h:150
Definition SingleSelectionTool.h:14
Definition World.h:918
Definition HitResult.h:21
Definition InputState.h:367
Definition InputState.h:52
Definition ToolContextInterfaces.h:50
Definition WeakObjectPtrTemplates.h:25