Touch Interface Designer 2025.2
Create touch interface with a visual editor and manage all mobile inputs like gestures
Loading...
Searching...
No Matches
VirtualInputEvent.h
Go to the documentation of this file.
1// Copyright 2022 Lost in Game Studio. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "UObject/Object.h"
8#include "Layout/Geometry.h"
9#include "Input/Events.h"
10#include "VirtualInputEvent.generated.h"
11
13class SVirtualControl;
14class ULocalPlayer;
15
16DEFINE_LOG_CATEGORY_STATIC(LogVirtualInputEvent, Log, All)
17
18//Base class to extends the functionality of virtual input
20class TOUCHINTERFACE_API UVirtualInputEvent : public UObject
21{
22 GENERATED_BODY()
23
24public:
26
27 // Called when virtual input is initialized
28 UFUNCTION(Category="Virtual Input Event", BlueprintNativeEvent)
29 void Initialize();
30
31 UFUNCTION(Category="Virtual Input Event", BlueprintNativeEvent)
33
34 virtual bool IsCompatible(EControlType InputType) const { return true; }
35
36 bool ShouldTick() const { return bShouldTick; }
37
38 void SetButtonName(const FName Name) { LinkedButtonName = Name; }
39 void SetOuter(UWorld* Outer) { WorldContext = Outer; }
40 void AssignLocalPlayer(ULocalPlayer* Player, TSharedPtr<SVirtualControl> Widget);
41
42 // Called when user's finger begin touch virtual control
43 UFUNCTION(Category="Virtual Input Event", BlueprintNativeEvent)
44 void OnTouchBegin(const FGeometry& Geometry, const FPointerEvent& PointerEvent, const float CurrentTime);
45
46 // Called when user's finger moves inside the virtual control
47 UFUNCTION(Category="Virtual Input Event", BlueprintNativeEvent)
48 void OnTouchMove(const FGeometry& Geometry, const FPointerEvent& PointerEvent, const float CurrentTime, const float PressDuration);
49
50 // Called when user's finger stops touching the virtual control
51 UFUNCTION(Category="Virtual Input Event", BlueprintNativeEvent)
52 void OnTouchEnd(const FGeometry& Geometry, const FPointerEvent& PointerEvent, const float CurrentTime, const float PressDuration);
53
54 // Called by Virtual Control Tick. Normally, Virtual Control tick once every frame but it's not guaranteed
55 UFUNCTION(Category="Virtual Input Event", BlueprintNativeEvent)
56 void OnTick(const FGeometry& Geometry, const double CurrentTime, const float DeltaTime);
57
58 UFUNCTION(Category="Virtual Input Event", BlueprintCallable, BlueprintPure)
59 APawn* GetPawn();
60
61 UFUNCTION(Category="Virtual Input Event", BlueprintCallable, BlueprintPure)
62 APlayerController* GetPlayerController();
63
65 UFUNCTION(Category="Virtual Input Event", BlueprintCallable, BlueprintPure)
66 FName GetButtonName();
67
69 UFUNCTION(Category="Virtual Input Event", BlueprintCallable, BlueprintPure)
70 void GetVisualLayers(TArray<FVisualLayer>& VisualLayers);
71
72 // Get a reference of visual layer data for the virtual control that own this virtual control event
73 UFUNCTION(Category="Virtual Input Event", BlueprintCallable, BlueprintPure)
75
76 // Get a copy of visual layer by name
77 UFUNCTION(Category="Virtual Input Event", BlueprintCallable, BlueprintPure)
78 bool GetVisualLayerByName(const FName Name, FVisualLayer& VisualLayer);
79
80 // Get a reference of visual layer by name
81 UFUNCTION(Category="Virtual Input Event", BlueprintCallable, BlueprintPure)
82 FVisualLayer& GetVisualLayerRefByName(const FName Name);
83
86 UFUNCTION(Category="Virtual Input Event", BlueprintCallable)
87 void SetVisualLayers(TArray<FVisualLayer> VisualLayers);
88
92 UFUNCTION(Category="Virtual Input Event", BlueprintCallable)
93 void SetVisualLayer(const FVisualLayer& VisualLayer, const FName Name = NAME_None);
94
100 UFUNCTION(Category="Virtual Input Event", BlueprintCallable)
101 FName AddNewLayer(FName LayerName, FVisualLayer Visual);
102
109 UFUNCTION(Category="Virtual Input Event", BlueprintCallable)
110 FName InsertLayerAt(FName LayerName, const int32 Index, FVisualLayer Visual);
111
112 //TODO: Insert new layer before layer
113 //TODO: Insert new layer after layer
114
115 UFUNCTION(Category="Virtual Input Event", BlueprintCallable)
116 void RemoveLayer(const FName LayerName);
117
118 // Get a copy of virtual input data
119 UFUNCTION(Category="Virtual Input Event", BlueprintCallable, BlueprintPure)
120 bool GetVirtualInput(FVirtualControl& VirtualInput);
121
122 //TODO: Make utilities function for visual layer like SetMaterialParameter, SetBrushFromTexture, SetBrushFromMaterial, etc.
123 //TODO: Set progress bar value, Set flipbook value, Set Progress Bar Speed, Set Flipbook speed, etc.
124
125 virtual UWorld* GetWorld() const override;
126
128
129 ULocalPlayer* GetLocalPlayer() { return LocalPlayer; }
130 TSharedPtr<SVirtualControl> GetVirtualControlWidget();
131
132protected:
134 virtual void Deinitialize_Implementation();
135 virtual void OnTouchBegin_Implementation(const FGeometry& Geometry, const FPointerEvent& PointerEvent, const float CurrentTime) {}
136 virtual void OnTouchMove_Implementation(const FGeometry& Geometry, const FPointerEvent& PointerEvent, const float CurrentTime, const float PressDuration) {}
137 virtual void OnTouchEnd_Implementation(const FGeometry& Geometry, const FPointerEvent& PointerEvent, const float CurrentTime, const float PressDuration) {}
138 virtual void OnTick_Implementation(const FGeometry& Geometry, const double CurrentTime, const float DeltaTime) {}
139
140 UFUNCTION(Category="Virtual Input Event", BlueprintCallable)
141 void SetTickEnabled(const bool bEnable) { bShouldTick = bEnable; }
142
143private:
144 UPROPERTY(Category="Settings", BlueprintReadOnly, EditDefaultsOnly, meta=(AllowPrivateAccess="true"))
145 bool bShouldTick = false;
146
147 UPROPERTY()
148 UWorld* WorldContext;
149
150 FName LinkedButtonName;
151
152 TSharedPtr<SVirtualControl> VirtualControlWidget;
153
154 UPROPERTY()
155 ULocalPlayer* LocalPlayer;
156};
Abstract
Definition ComponentDecorator_Animation.h:40
BlueprintType
Definition ComponentDecorator_Animation.h:40
Blueprintable
Definition ComponentDecorator_Animation.h:40
meta
Definition GestureRecognizerComp.h:274
DEFINE_LOG_CATEGORY_STATIC(LogProgressBarWidget, Log, All)
EControlType
Definition VirtualControlSetup.h:25
Definition SVirtualControl.h:18
Definition TouchInterfaceSubsystem.h:70
virtual void Initialize_Implementation()
Definition VirtualInputEvent.h:133
BlueprintNativeEvent void OnTouchMove(const FGeometry &Geometry, const FPointerEvent &PointerEvent, const float CurrentTime, const float PressDuration)
ULocalPlayer * GetLocalPlayer()
Definition VirtualInputEvent.h:129
BlueprintCallable
Definition VirtualInputEvent.h:58
BlueprintNativeEvent void Deinitialize()
BlueprintPure void GetVisualLayers(TArray< FVisualLayer > &VisualLayers)
Definition VirtualInputEvent.cpp:50
BlueprintPure bool GetVisualLayerByName(const FName Name, FVisualLayer &VisualLayer)
Definition VirtualInputEvent.cpp:60
BlueprintNativeEvent void Initialize()
BlueprintCallable void RemoveLayer(const FName LayerName)
Definition VirtualInputEvent.cpp:164
virtual UWorld * GetWorld() const override
Definition VirtualInputEvent.cpp:189
Category
Definition VirtualInputEvent.h:28
BlueprintPure FVisualLayer & GetVisualLayerRefByName(const FName Name)
Definition VirtualInputEvent.cpp:76
BlueprintPure APawn * GetPawn()
Definition VirtualInputEvent.cpp:30
virtual void OnTouchMove_Implementation(const FGeometry &Geometry, const FPointerEvent &PointerEvent, const float CurrentTime, const float PressDuration)
Definition VirtualInputEvent.h:136
virtual bool IsCompatible(EControlType InputType) const
Definition VirtualInputEvent.h:34
virtual void OnTouchBegin_Implementation(const FGeometry &Geometry, const FPointerEvent &PointerEvent, const float CurrentTime)
Definition VirtualInputEvent.h:135
BlueprintCallable void SetVisualLayers(TArray< FVisualLayer > VisualLayers)
Definition VirtualInputEvent.cpp:89
BlueprintPure TArray< FVisualLayer > & GetVisualLayersRef()
Definition VirtualInputEvent.cpp:55
UVirtualInputEvent()
Definition VirtualInputEvent.cpp:11
BlueprintPure bool GetVirtualInput(FVirtualControl &VirtualInput)
Definition VirtualInputEvent.cpp:178
virtual void OnTouchEnd_Implementation(const FGeometry &Geometry, const FPointerEvent &PointerEvent, const float CurrentTime, const float PressDuration)
Definition VirtualInputEvent.h:137
BlueprintNativeEvent void OnTick(const FGeometry &Geometry, const double CurrentTime, const float DeltaTime)
BlueprintNativeEvent void OnTouchEnd(const FGeometry &Geometry, const FPointerEvent &PointerEvent, const float CurrentTime, const float PressDuration)
BlueprintCallable void SetVisualLayer(const FVisualLayer &VisualLayer, const FName Name=NAME_None)
Definition VirtualInputEvent.cpp:94
BlueprintPure APlayerController * GetPlayerController()
Definition VirtualInputEvent.cpp:35
void SetOuter(UWorld *Outer)
Definition VirtualInputEvent.h:39
bool ShouldTick() const
Definition VirtualInputEvent.h:36
BlueprintCallable FName InsertLayerAt(FName LayerName, const int32 Index, FVisualLayer Visual)
Definition VirtualInputEvent.cpp:143
UTouchInterfaceSubsystem * GetTouchInterfaceSubsystem()
Definition VirtualInputEvent.cpp:194
virtual void OnTick_Implementation(const FGeometry &Geometry, const double CurrentTime, const float DeltaTime)
Definition VirtualInputEvent.h:138
BlueprintPure FName GetButtonName()
Definition VirtualInputEvent.cpp:40
BlueprintNativeEvent void OnTouchBegin(const FGeometry &Geometry, const FPointerEvent &PointerEvent, const float CurrentTime)
void SetButtonName(const FName Name)
Definition VirtualInputEvent.h:38
BlueprintCallable FName AddNewLayer(FName LayerName, FVisualLayer Visual)
Definition VirtualInputEvent.cpp:122
BlueprintCallable void SetTickEnabled(const bool bEnable)
Definition VirtualInputEvent.h:141
Definition VirtualControlSetup.h:165
Definition VirtualControlSetup.h:62