Touch Interface Designer 2025.2
Create touch interface with a visual editor and manage all mobile inputs like gestures
Loading...
Searching...
No Matches
JoystickLogic.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 "ComponentLogic.h"
7#include "JoystickLogic.generated.h"
8
10
11//Base class for joystick logic
12UCLASS()
13class TOUCHINTERFACE_API UJoystickLogic : public UComponentLogic
14{
15 GENERATED_BODY()
16
17public:
19
20 //Begin LayoutComponentLogic Implementation
21 virtual void Initialize_Implementation() override;
22
23protected:
24 virtual void OnPress_Implementation(const FGeometry& ComponentGeometry, const FPointerEvent& PointerEvent) override;
25 virtual void OnMove_Implementation(const FGeometry& ComponentGeometry, const FPointerEvent& PointerEvent) override;
26 virtual void OnRelease_Implementation(const FGeometry& ComponentGeometry, const FPointerEvent& PointerEvent) override;
27
28 virtual void CalculateThumbPosition(const FGeometry& ComponentGeometry, const FPointerEvent& PointerEvent);
29
30public:
31 virtual void SetInputAction_Implementation(UInputAction* NewInputAction) override;
32
33 //End LayoutComponentLogic Implementation
34
35 //TODO: Bindable event
36 //OnThumbstickValueChanged
37
38 //TODO: Slate Space or World Space?
39 UFUNCTION(Category="Joystick", BlueprintCallable, BlueprintPure)
40 FVector2D GetThumbPosition(const bool bNormalized) const;
41
42 UFUNCTION(Category="Joystick", BlueprintCallable, BlueprintPure)
43 FVector2D GetThumbOffset() const { return ThumbPosition; }
44
45 UFUNCTION(Category="Joystick", BlueprintCallable, BlueprintPure)
47
48 //TODO: Get Normalized offset
49
50 float GetAngleDelta() const { return LastAngleDelta; }
51
52 FVector2D GetRawValue(const bool bApplyModifiers = false);
53 FVector2D GetRawValueBasedOnPosition(const FGeometry& ComponentGeometry, const FVector2D InThumbPosition);
54 //FVector2D GetLastRawValue() const { return LastNormalizedOffsetScaled; }
55
56 UFUNCTION(Category="Joystick", BlueprintCallable)
57 void SetThumbstickLayerName(FName LayerName);
58
59
60public:
61 //TODO: If decorator is deleted, the property should be reset to none
62 // Name of decorator that is used as thumbstick
63 UPROPERTY(Category="Joystick", EditAnywhere, BlueprintReadOnly, meta=(AllowPrivateAccess="true"), meta=(GetOptions="GetAllDecoratorNames"))
64 FName ThumbstickDecoratorName;
65
66 // If enabled, the logic set the rotation of decorator instead of position
67 UPROPERTY(Category="Joystick", EditAnywhere, BlueprintReadOnly, meta=(AllowPrivateAccess="true"))
68 uint8 bDirectionOnly:1;
69
70 UPROPERTY(Category="Joystick", EditAnywhere, BlueprintReadOnly, meta=(AllowPrivateAccess="true"), meta=(EditCondition="bDirectionOnly==true", EditConditionHide))
71 uint8 bResetDirectionToZero:1;
72
73 //TODO: Support legacy input
74
75 UPROPERTY(Category="Joystick", EditAnywhere, BlueprintReadOnly, meta=(AllowPrivateAccess="true"))
76 TObjectPtr<UInputAction> InputAction;
77
80 UPROPERTY(Category="Joystick", EditAnywhere, BlueprintReadOnly, meta=(AllowPrivateAccess="true"))
81 bool bClampThumbstickPosition;
82
83protected:
84 UPROPERTY(Transient)
86
87 FVector2D RawValue;
88
89 // Thumb position (not clamped)
90 FVector2D ThumbPosition;
91
92 // Thumb position clamped to visual size
94
96
98
100};
Definition ComponentDecorator.h:36
Category
Definition ComponentDecorator.h:80
BlueprintCallable
Definition ComponentDecorator.h:80
BlueprintCallable
Definition JoystickLogic.h:39
float LastAngleDelta
Definition JoystickLogic.h:95
float GetAngleDelta() const
Definition JoystickLogic.h:50
FVector2D RawValue
Definition JoystickLogic.h:87
EditAnywhere
Definition JoystickLogic.h:63
virtual void Initialize_Implementation() override
Definition JoystickLogic.cpp:21
virtual void OnPress_Implementation(const FGeometry &ComponentGeometry, const FPointerEvent &PointerEvent) override
Definition JoystickLogic.cpp:44
BlueprintPure FVector2D GetThumbOffset() const
Definition JoystickLogic.h:43
BlueprintReadOnly
Definition JoystickLogic.h:63
UJoystickLogic()
Definition JoystickLogic.cpp:11
virtual void OnRelease_Implementation(const FGeometry &ComponentGeometry, const FPointerEvent &PointerEvent) override
Definition JoystickLogic.cpp:93
Transient TWeakObjectPtr< UComponentDecorator > ThumbstickLayerRef
Definition JoystickLogic.h:85
Category
Definition JoystickLogic.h:39
virtual void SetInputAction_Implementation(UInputAction *NewInputAction) override
Definition JoystickLogic.cpp:152
virtual void CalculateThumbPosition(const FGeometry &ComponentGeometry, const FPointerEvent &PointerEvent)
Definition JoystickLogic.cpp:127
FVector2D LastNormalizedOffset
Definition JoystickLogic.h:97
BlueprintPure FVector2D GetThumbPosition(const bool bNormalized) const
Definition JoystickLogic.cpp:162
virtual void OnMove_Implementation(const FGeometry &ComponentGeometry, const FPointerEvent &PointerEvent) override
Definition JoystickLogic.cpp:70
meta
Definition JoystickLogic.h:63
FVector2D ThumbPosition
Definition JoystickLogic.h:90
float LastRotation
Definition JoystickLogic.h:99
BlueprintPure UComponentDecorator * GetThumbstickLayer() const
Definition JoystickLogic.h:46
FVector2D ClampedThumbPosition
Definition JoystickLogic.h:93