Touch Interface Designer 2025.2
Create touch interface with a visual editor and manage all mobile inputs like gestures
Loading...
Searching...
No Matches
AdvancedJoystickLogic.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"
6#include "JoystickLogic.h"
7#include "AdvancedJoystickLogic.generated.h"
8
9UENUM()
10enum class ESprintLayerVisibility : uint8
11{
12 //Displays sprint layer when thumbstick position exceeds component size
14
15 //Displays the sprint layer when the sprint trigger is reached
17
18 //Displays the sprint layer at the position for triggering the sprint, then at the position for triggering the automatic sprint.
20
21 //Always display the sprint layer
23};
24
28UCLASS()
29class TOUCHINTERFACE_API UAdvancedJoystickLogic : public UJoystickLogic
30{
31 GENERATED_BODY()
32
33public:
35
36 //Begin LayoutComponentLogic Implementation
37 virtual void Initialize_Implementation() override;
38
39protected:
40 virtual void OnPress_Implementation(const FGeometry& ComponentGeometry, const FPointerEvent& PointerEvent) override;
41 virtual void OnMove_Implementation(const FGeometry& ComponentGeometry, const FPointerEvent& PointerEvent) override;
42 virtual void OnRelease_Implementation(const FGeometry& ComponentGeometry, const FPointerEvent& PointerEvent) override;
43 virtual void OnTick_Implementation(const FGeometry& ComponentGeometry, const FPointerEvent& PointerEvent, const double InCurrentTime, const float InDeltaTime) override;
44 //End LayoutComponentLogic Implementation
45
46public:
49 UFUNCTION(Category="Joystick|Advanced", BlueprintCallable)
50 void LockThumb();
51
54 UFUNCTION(Category="Joystick|Advanced", BlueprintCallable)
55 void LockThumbAtDesiredPosition(const FVector2D LockPosition, const bool bClamp = true);
56
59 UFUNCTION(Category="Joystick|Advanced", BlueprintCallable)
60 void UnlockThumb();
61
62 //Return true if auto move is enabled
63 UFUNCTION(Category="Joystick|Advanced", BlueprintCallable)
64 bool IsLocked() const { return bIsAutoMove; }
65
66public:
67 //AUTO MOVE
68
71 UPROPERTY(Category="Auto Move", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.0f, ClampMax=1.0f, UIMin=0.0f, UIMax=1.0f))
72 uint8 bAutoMove:1;
73
75 UPROPERTY(Category="Auto Move", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.0f, ClampMax=1.0f, UIMin=0.0f, UIMax=1.0f))
76 float AutoMoveThreshold;
77
81 UPROPERTY(Category="Auto Move", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.9f, UIMin=0.9f, ClampMax=1.0f, UIMax=1.0f))
82 float AutoMoveDirectionThreshold;
83
86 UPROPERTY(Category="Auto Move", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.0f, UIMin=0.0f))
87 float AutoMoveHoldDuration;
88
89 // Decorator name for lock icon when auto move is enabled
90 UPROPERTY(Category="Auto Move", EditAnywhere, BlueprintReadOnly, meta=(GetOptions="GetAllDecoratorNames"))
91 FName LockLayerName;
92
93 // If enable, when thumbstick is locked, it is re-centred
94 UPROPERTY(Category="Auto Move", EditAnywhere, BlueprintReadOnly)
96
97
98 //DRAG TO SPRINT
99
102 UPROPERTY(Category="Drag to sprint", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.0f, UIMin=0.0f))
103 uint8 bDragToSprint:1;
104
107 UPROPERTY(Category="Drag to sprint", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.0f, UIMin=0.0f))
108 float DragToSprintTrigger;
109
113 UPROPERTY(Category="Drag to sprint", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.0f, UIMin=0.0f))
114 float DragToSprintThreshold;
115
116 // Always display sprint decorator on screen
117 UPROPERTY(Category="Drag to sprint", EditAnywhere, BlueprintReadOnly)
119
120 // Sprint input action
121 UPROPERTY(Category="Drag to sprint", EditAnywhere, BlueprintReadOnly)
122 UInputAction* SprintInputAction;
123
124 //TODO: If sprint is launched, then stopped by out of threshold, the user's finger should back to center to relaunch sprint.
125 //Avoid situation when finger is in/out of threshold value
126
127 //TODO: When launched, sprint can be stopped if threshold value is exceeded
128
129 UPROPERTY(Category="Drag to sprint|Auto Sprint", EditAnywhere, BlueprintReadOnly)
130 uint8 bAutoSprint:1;
131
134 UPROPERTY(Category="Drag to sprint|Auto Sprint", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.0f, UIMin=0.0f))
135 float AutoSprintTrigger;
136
137 //Name of decorator used to show sprint layer button
138 UPROPERTY(Category="Drag to sprint|Auto Sprint", EditAnywhere, BlueprintReadOnly, meta=(GetOptions="GetAllDecoratorNames"))
139 FName SprintLayerName;
140
141private:
142 UPROPERTY()
143 TWeakObjectPtr<UComponentDecorator> LockLayerRef;
144
145 UPROPERTY()
146 TWeakObjectPtr<UComponentDecorator> SprintLayerRef;
147
148 float HoldDuration;
149
150 uint8 bCheckHoldDuration:1;
151 uint8 bIsAutoMove:1;
152
153 //Thumb is locked for Auto Move
154 uint8 bThumbIsLocked:1;
155
156 //Direction for Auto Move
157 FVector2D LockedPosition;
158
159 uint8 bDragToSprintEventSent:1;
160 uint8 bIsAutoSprint:1;
161
162 FVector2D CurrentDragToSprintOffset;
163 FName AutoSprintLayerName;
164};
ESprintLayerVisibility
Definition AdvancedJoystickLogic.h:11
@ Always
Definition AdvancedJoystickLogic.h:22
@ TriggerReached
Definition AdvancedJoystickLogic.h:16
@ TwoStep
Definition AdvancedJoystickLogic.h:19
@ OutsideComponent
Definition AdvancedJoystickLogic.h:13
virtual void OnRelease_Implementation(const FGeometry &ComponentGeometry, const FPointerEvent &PointerEvent) override
Definition AdvancedJoystickLogic.cpp:177
BlueprintReadOnly UInputAction * SprintInputAction
Definition AdvancedJoystickLogic.h:122
virtual void Initialize_Implementation() override
Definition AdvancedJoystickLogic.cpp:33
BlueprintCallable void LockThumb()
Definition AdvancedJoystickLogic.cpp:263
BlueprintCallable void LockThumbAtDesiredPosition(const FVector2D LockPosition, const bool bClamp=true)
Definition AdvancedJoystickLogic.cpp:275
BlueprintReadOnly uint8 bRecenterThumbstickAfterLock
Definition AdvancedJoystickLogic.h:95
BlueprintReadOnly uint8 bAlwaysDisplaySprintLayer
Definition AdvancedJoystickLogic.h:118
BlueprintReadOnly
Definition AdvancedJoystickLogic.h:71
BlueprintCallable bool IsLocked() const
Definition AdvancedJoystickLogic.h:64
BlueprintReadOnly uint8 bAutoSprint
Definition AdvancedJoystickLogic.h:130
virtual void OnTick_Implementation(const FGeometry &ComponentGeometry, const FPointerEvent &PointerEvent, const double InCurrentTime, const float InDeltaTime) override
Definition AdvancedJoystickLogic.cpp:253
UAdvancedJoystickLogic()
Definition AdvancedJoystickLogic.cpp:9
virtual void OnMove_Implementation(const FGeometry &ComponentGeometry, const FPointerEvent &PointerEvent) override
Definition AdvancedJoystickLogic.cpp:124
EditAnywhere
Definition AdvancedJoystickLogic.h:71
BlueprintCallable void UnlockThumb()
Definition AdvancedJoystickLogic.cpp:299
meta
Definition AdvancedJoystickLogic.h:71
Category
Definition AdvancedJoystickLogic.h:49
virtual void OnPress_Implementation(const FGeometry &ComponentGeometry, const FPointerEvent &PointerEvent) override
Definition AdvancedJoystickLogic.cpp:107
Definition ComponentDecorator.h:36
BlueprintCallable
Definition JoystickLogic.h:39
UJoystickLogic()
Definition JoystickLogic.cpp:11