Touch Interface Designer 2025.2
Create touch interface with a visual editor and manage all mobile inputs like gestures
Loading...
Searching...
No Matches
VirtualInputDragToSprint.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 "VirtualInputEvent.h"
7#include "VirtualInputDragToSprint.generated.h"
8
11class UVirtualInput;
12
18{
19 GENERATED_BODY()
20
21public:
22 // The minimum drag length in pixel (Y axis, vertical) to start the sprint
23 UPROPERTY(Category="Drag to sprint", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.0f, UIMin=0.0f))
24 float DragToSprintTrigger = 150.0f;
25
29 UPROPERTY(Category="Drag to sprint", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.0f, UIMin=0.0f))
30 float DragToSprintThreshold = 40.0f;
31
37 UPROPERTY(Category="Drag to sprint", EditAnywhere, BlueprintReadOnly)
39
40 // Always displayed on screen
41 UPROPERTY(Category="Drag to sprint", EditAnywhere, BlueprintReadOnly)
43
44
45
46 //TODO: If sprint is launched, then stopped by out of threshold, the user's finger should back to center to relaunch sprint.
47 //Avoid situation when finger is in/out of threshold value
48
49 //TODO: When launched, sprint can be stopped if threshold value is exceeded
50
51 UPROPERTY(Category="Auto Sprint", EditAnywhere, BlueprintReadOnly)
52 bool bEnableAutoSprint = true;
53
56 UPROPERTY(Category="Auto Sprint", EditAnywhere, BlueprintReadOnly, meta=(ClampMin=0.0f, UIMin=0.0f))
57 float AutoSprintTrigger = 400.0f;
58
59 // Auto sprint icon (displayed on joystick)
60 UPROPERTY(Category="Auto Sprint", EditAnywhere, BlueprintReadOnly)
62
63 //TODO: Sprint Mode: Inject input, increase raw value of virtual input or send event?
64
65 //TODO: Allow user to make more advanced customization with subclass (show example)
66
67 //TODO: Detect sprint in any direction?
68
69 virtual bool IsCompatible(EControlType InputType) const override { return InputType == EControlType::Joystick; }
70
71private:
72 TSharedPtr<SVirtualControlJoystick> Joystick;
73
74 TArray<FVisualLayer> SprintButtonVisualLayers;
75
76 UPROPERTY()
77 UInputAction* SprintButtonInputAction;
78
79 uint8 bDragToSprintEventSent:1;
80 uint8 bIsAutoSprint:1;
81
82 FVector2D CurrentDragToSprintOffset;
83
84 FName SprintLayerName;
85 FName AutoSprintLayerName;
86
87protected:
88 virtual void Initialize_Implementation() override;
89 virtual void OnTouchBegin_Implementation(const FGeometry& Geometry, const FPointerEvent& PointerEvent, const float CurrentTime) override;
90 virtual void OnTouchMove_Implementation(const FGeometry& Geometry, const FPointerEvent& PointerEvent, const float CurrentTime, const float PressDuration) override;
91 virtual void OnTouchEnd_Implementation(const FGeometry& Geometry, const FPointerEvent& PointerEvent, const float CurrentTime, const float PressDuration) override;
92};
Abstract
Definition ComponentDecorator_Animation.h:40
MinimalAPI
Definition LCInputModifier.h:45
EControlType
Definition VirtualControlSetup.h:25
@ Joystick
Definition VirtualControlSetup.h:27
Definition SVirtualControlJoystick.h:12
Definition VirtualInputButton.h:14
Definition VirtualInputDragToSprint.h:18
BlueprintReadOnly bool bEnableAutoSprint
Definition VirtualInputDragToSprint.h:52
BlueprintReadOnly TObjectPtr< UVirtualInputButton > SprintButton
Definition VirtualInputDragToSprint.h:38
BlueprintReadOnly FVisualLayer AutoSprintIcon
Definition VirtualInputDragToSprint.h:61
meta
Definition VirtualInputDragToSprint.h:23
virtual bool IsCompatible(EControlType InputType) const override
Definition VirtualInputDragToSprint.h:69
Category
Definition VirtualInputDragToSprint.h:23
BlueprintReadOnly
Definition VirtualInputDragToSprint.h:23
EditAnywhere
Definition VirtualInputDragToSprint.h:23
BlueprintReadOnly bool bAlwaysDisplaySprintButton
Definition VirtualInputDragToSprint.h:42
UVirtualInputEvent()
Definition VirtualInputEvent.cpp:11
Definition VirtualInput.h:26
Definition VirtualControlSetup.h:62