Touch Interface Designer 2025.2
Create touch interface with a visual editor and manage all mobile inputs like gestures
Loading...
Searching...
No Matches
SVirtualControlJoystick.h
Go to the documentation of this file.
1// Copyright Lost in Game Studio, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "SVirtualControl.h"
7
11class TOUCHINTERFACE_API SVirtualControlJoystick : public SVirtualControl
12{
13public:
15 : _TouchInterface(nullptr)
16 , _VirtualInput(nullptr)
17 , _Slot(nullptr)
18 , _AutoPositioning(true)
19 , _UseInputAction(false)
20 , _ParentOffset(ForceInitToZero)
21 {}
22
23 SLATE_ARGUMENT(TSharedPtr<SDeprecatedTouchInterface>, TouchInterface)
24 SLATE_ARGUMENT(FVirtualControl, VirtualControl)
25 SLATE_ARGUMENT(UVirtualInput*, VirtualInput)
26 SLATE_ARGUMENT(SConstraintCanvas::FSlot*, Slot)
27 SLATE_ARGUMENT(bool, AutoPositioning)
28 SLATE_ARGUMENT(bool, UseInputAction)
29 SLATE_ARGUMENT(FVector2D, ParentOffset)
30 SLATE_ARGUMENT(ULocalPlayer*, LocalPlayer)
31
32 SLATE_ATTRIBUTE(float, Opacity)
33 SLATE_ATTRIBUTE(float, ScaleFactor)
34 SLATE_ATTRIBUTE(bool, DrawDebug)
35
36 SLATE_END_ARGS()
37
39
41 void Construct(const FArguments& InArgs);
42
43 //SVirtualControl
44 virtual bool OnPress(const FGeometry& MyGeometry, const FPointerEvent& Event) override;
45 virtual void OnMove(const FGeometry& MyGeometry, const FPointerEvent& Event) override;
46 virtual void OnRelease(const FGeometry& MyGeometry, const FPointerEvent& Event) override;
47 virtual void OnTick(const FGeometry& MyGeometry, const float InScaleFactor, const double InCurrentTime, const float InDeltaTime, const bool InForceUpdate, const bool OrientToLandscape) override;
48
49 virtual void CalculateCorrectedValues(const FVector2D& Center, const FVector2D Offset, const FGeometry& AllottedGeometry, const float InScaleFactor) override;
50 virtual void Recenter(const FVector2D DesiredPosition) override;
51 //SVirtualControl
52
53 //SWidget
54 //virtual void Tick(const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime) override;
55 virtual int32 OnPaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
56 virtual FVector2D ComputeDesiredSize(float LayoutScaleMultiplier) const override;
57 //SWidget
58
61 bool LockThumb();
62
65 bool LockThumbAtDesiredPosition(const FVector2D LockPosition, const bool Clamp = true);
66
69 void UnlockThumb(const bool bRecenter);
70
71 FVector2D GetThumbPosition(const bool bNormalized) const;
72
73 FVector2D GetThumbOffset() const { return ThumbOffset; }
74
75 //TODO: Get Normalized offset
76
77 float GetAngleDelta() const { return LastAngleDelta; }
78
79 FVector2D GetRawValue(const bool bApplyModifiers = false);
80 FVector2D GetLastRawValue() const { return LastNormalizedOffsetScaled; }
81
82private:
83 //Send one more joystick update in tick for centering thumbstick
84 uint8 bSendOneMoreEvent:1;
85 uint8 bThumbIsLocked:1;
86
87 float LastAngleDelta;
88
89 FVector2D LockedPosition;
90 FVector2D LastNormalizedOffset;
91 FVector2D LastNormalizedOffsetScaled;
92 FVector2D CorrectedThumbSize;
93
94 // Thumb position clamped to visual size
95 FVector2D ThumbPosition;
96
97 // Thumb position (not clamped)
98 FVector2D ThumbOffset;
99};
@ OnPress
Definition ComponentDecorator_Animation.h:17
@ OnRelease
Definition ComponentDecorator_Animation.h:20
@ Center
Definition LayoutComponent.h:78
SVirtualControl()
Definition SVirtualControl.cpp:26
Definition SVirtualControlJoystick.h:12
SVirtualControlJoystick()
Definition SVirtualControlJoystick.cpp:13
float GetAngleDelta() const
Definition SVirtualControlJoystick.h:77
FVector2D GetLastRawValue() const
Definition SVirtualControlJoystick.h:80
FVector2D GetThumbOffset() const
Definition SVirtualControlJoystick.h:73
SLATE_BEGIN_ARGS(SVirtualControlJoystick)
Definition SVirtualControlJoystick.h:14
Definition TouchInterface.Build.cs:6
Definition VirtualInput.h:26
Definition VirtualControlSetup.h:165