Touch Interface Designer 2025.2
Create touch interface with a visual editor and manage all mobile inputs like gestures
Loading...
Searching...
No Matches
STouchInterfaceConfigurator.h
Go to the documentation of this file.
1// Copyright 2024 Lost in Game Studio. All Rights Reserved
2
3#pragma once
4
5#include "CoreMinimal.h"
8#include "Widgets/SCompoundWidget.h"
9
10DECLARE_DELEGATE_OneParam(FOnVirtualInputSelected, FName);
11
12class TOUCHINTERFACE_API STouchInterfaceConfigurator : public SCompoundWidget
13{
14public:
17 SLATE_ARGUMENT(float, DPIScale)
18 SLATE_ARGUMENT(float, ResizeSensibility)
19
20 SLATE_EVENT(FOnVirtualInputSelected, OnVirtualControlSelected)
21
22 SLATE_END_ARGS()
23
24
25 void Construct(const FArguments& InArgs);
26
27 virtual FVector2D ComputeDesiredSize(float LayoutScaleMultiplier) const override;
28
29 virtual FReply OnTouchStarted(const FGeometry& MyGeometry, const FPointerEvent& InTouchEvent) override;
30 virtual FReply OnDragDetected(const FGeometry& MyGeometry, const FPointerEvent& MouseEvent) override;
31 virtual FReply OnTouchMoved(const FGeometry& MyGeometry, const FPointerEvent& InTouchEvent) override;
32 virtual FReply OnTouchEnded(const FGeometry& MyGeometry, const FPointerEvent& InTouchEvent) override;
33
34 virtual int32 OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
35
36private:
37 virtual void PaintButton(const FVirtualControl& VirtualControl, const FGeometry& AllottedGeometry, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle) const;
38 virtual void PaintJoystick(const FVirtualControl& VirtualControl, const FGeometry& AllottedGeometry, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle) const;
39 virtual void PaintTouchRegion(const FVirtualControl& VirtualControl, const FGeometry& AllottedGeometry, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle) const;
40
41 void DrawLayer(const FVisualLayer& InLayer, const FVector2D InSize, const FVector2D InBrushSize, const FVector2D InOffset, const FGeometry& AllottedGeometry, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle) const;
42
43 float GetScaleFactor(const FGeometry& AllottedGeometry) const;
44
45 bool IsInside(const FVirtualControl& VirtualControl, const FGeometry& AllottedGeometry, const FVector2D FingerPosition);
46
47 FVector2D GetVirtualControlLocation(const FName Name, const FGeometry& AllottedGeometry, const bool bSubtractVisualSize) const;
48
49 FVector2D GetVirtualControlPositionFromSetup(const FName Name) const;
50
51 FVirtualControl GetVirtualControlFromSetup(const FName Name) const;
52
53public:
54 void SetConfiguration(FTouchInterfaceConfiguration Configuration);
55 FTouchInterfaceConfiguration GetConfiguration();
56
57 void ClearTouchInterface();
58
59 void SetPreviewEnabled(const bool bEnabled) { bPreview = bEnabled; }
60 bool IsPreviewEnabled() const { return bPreview; }
61
62 void SetOpacity(const float NewActive, const float NewInactive);
63
64 FVector2D GetVirtualInputOffset(const FName InputName);
65 void SetVirtualInputOffset(const FName InputName, const FVector2D Offset);
66 FVector2D AddOffsetToVirtualInput(const FName InputName, const FVector2D Delta);
67
68 float GetVirtualInputSizeScale(const FName InputName);
69 void SetVirtualInputSizeScale(const FName InputName, const float Size);
70 float AddDeltaToVirtualInputSizeScale(const FName InputName, const float Delta);
71
72 void SetDPIScale(const float NewDPIScale) { DPIScale = NewDPIScale; }
73
74public:
77
79
81 FSlateBrush PositioningBrush;
82
85
86private:
87 FOnVirtualInputSelected OnVirtualInputSelected;
88
89 FTouchInterfaceConfiguration CurrentConfiguration;
90
91 UVirtualControlSetup* SetupRef;
92
93 FVector2D ScreenSize;
94
95 float DPIScale;
96 float ActiveOpacity;
97 float InactiveOpacity;
98 float LastDistanceBetweenFingers;
99
100
101 uint8 bPreview:1;
102
103 FVector2D TouchLocation_Finger0;
104 FVector2D TouchLocation_Finger1;
105
106 FName VirtualControlSelectedName;
107
108 FVirtualControl VirtualControlSelected;
109
110 bool bIsTouching;
111
112 uint8 bDragVirtualControl:1;
113 uint8 bResizeVirtualControl:1;
114 uint8 bCanDrawPositioningBrush:1;
115};
DECLARE_DELEGATE_OneParam(FOnVirtualInputSelected, FName)
Definition STouchInterfaceConfigurator.h:13
FSlateBrush PositioningBrush
Definition STouchInterfaceConfigurator.h:81
uint8 bUseTouchForPositioning
Definition STouchInterfaceConfigurator.h:75
SLATE_BEGIN_ARGS(STouchInterfaceConfigurator)
Definition STouchInterfaceConfigurator.h:15
void SetPreviewEnabled(const bool bEnabled)
Definition STouchInterfaceConfigurator.h:59
float ResizeSensibility
Definition STouchInterfaceConfigurator.h:78
void SetDPIScale(const float NewDPIScale)
Definition STouchInterfaceConfigurator.h:72
uint8 bDrawPositioningBrush
Definition STouchInterfaceConfigurator.h:80
uint8 bUseTouchForResizing
Definition STouchInterfaceConfigurator.h:76
bool IsPreviewEnabled() const
Definition STouchInterfaceConfigurator.h:60
FSlateBrush OriginalCenterBrush
Definition STouchInterfaceConfigurator.h:84
uint8 bDrawOriginalCenterBrush
Definition STouchInterfaceConfigurator.h:83
Definition VirtualControlSetup.h:465
Definition TouchInterfaceSave.h:14
Definition VirtualControlSetup.h:165
Definition VirtualControlSetup.h:62