Touch Interface Designer 2025.2
Create touch interface with a visual editor and manage all mobile inputs like gestures
Loading...
Searching...
No Matches
ShapeRecognizer.h
Go to the documentation of this file.
1// Copyright Lost in Game Studio. All Rights Reserved.
2
3#pragma once
4
7#include "ShapeRecognizer.generated.h"
8
9class UVirtualShape;
10
12{
13 FVector2D StartPosition;
14 FVector2D EndPosition;
15 FVector2D Direction;
16
17 float Length;
18
20
22 : StartPosition(ForceInitToZero)
23 , EndPosition(ForceInitToZero)
24 , Direction(ForceInitToZero)
25 , Length(0.0f)
26 , bHasDirection(false)
27 {
28
29 }
30
31 explicit FDrawing(const FVector2D InPosition)
32 : StartPosition(InPosition)
33 , EndPosition(ForceInitToZero)
34 , Direction(ForceInitToZero)
35 , Length(0.0f)
36 , bHasDirection(false)
37 {
38
39 }
40};
41
42DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnShapeDetectionSuccessSignature, const UVirtualShape*, Asset);
43DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnShapeDetectionFailedSignature); //Todo: Add reason
45
49UCLASS(ClassGroup=(TouchInterfaceDesigner), meta=(BlueprintSpawnableComponent))
50class TOUCHINTERFACE_API UShapeRecognizer : public UTouchInterfaceListener
51{
52 GENERATED_BODY()
53
54public:
55 UShapeRecognizer();
56
57protected:
58 virtual void BeginPlay() override;
59
60public:
61 virtual bool OnTouchStarted(const int32 FingerIndex, const FVector2D Location) override;
62 virtual void OnTouchMoved(const int32 FingerIndex, const FVector2D Location) override;
63 virtual void OnTouchEnded(const int32 FingerIndex, const FVector2D Location) override;
64
65 virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
66
67 virtual void HandleOnOrientationChanged() override;
68
69 //Todo: Add/Remove shape
70
74 bool RestrictRecognizerToShapeByName(const FName VirtualShapeName);
75
79 void RestrictRecognizerToShapeByAsset(const UVirtualShape* InVirtualShape);
80
81 void ClearRecognizerRestriction() { RestrictedVirtualShapeName = NAME_None; }
82
83 //Todo: Show/Hide guide
84
88 UFUNCTION(Category="Shape Recognizer", BlueprintCallable)
89 virtual void TryRecognizeShape();
90
91 UFUNCTION(Category="Shape Recognizer", BlueprintCallable)
92 virtual void DeleteUserDrawing();
93
94protected:
95 // Called at the end of user drawing to recognize shape
96 virtual void Compute();
97
98 // Try to recognize the shape while the user is drawing (partial data)
99 virtual void PredictiveCompute();
100
101 virtual void ClearData();
102
103
104public:
107 UPROPERTY(Category="Shape Recognizer|Events", BlueprintAssignable)
108 FOnDrawState OnDrawBegin;
109
111 UPROPERTY(Category="Shape Recognizer|Events", BlueprintAssignable)
112 FOnDrawState OnDrawEnd;
113
114private:
115 //Shape you want that this manager recognize
116 UPROPERTY(Category="Shape", EditAnywhere, BlueprintReadOnly, meta=(AllowPrivateAccess="true"))
117 TArray<UVirtualShape*> VirtualShapes;
118
119 //UPROPERTY(Category="Shape", EditAnywhere, BlueprintReadOnly, meta=(AllowPrivateAccess="true"))
120 //uint8 bCloseShape:1;
121
122 UPROPERTY(Category="Shape", EditAnywhere, BlueprintReadOnly, meta=(AllowPrivateAccess="true"))
123 float MaxCloseDistance;
124
125 //UPROPERTY(Category="Shape", EditAnywhere, BlueprintReadOnly, meta=(AllowPrivateAccess="true"))
126 //uint8 bPredictiveDetection:1;
127
128 //TODO: Cleaner here instead of each virtual shape
129
130 UPROPERTY(Category="Shape", BlueprintAssignable)
131 FOnShapeDetectionSuccessSignature OnShapeDetectionSuccess;
132
133 UPROPERTY(Category="Shape", BlueprintAssignable)
134 FOnShapeDetectionFailedSignature OnShapeDetectionFailed;
135
136 uint8 bRestricted:1;
137
138 //UVirtualShape* RestrictedVirtualShape;
139 FName RestrictedVirtualShapeName;
140
141 TArray<FDrawData> UserDrawing;
142 TArray<FDrawData> DotData;
143
144 float ShapeDotDistance;
145
146 uint8 bIsComputing:1;
147 uint8 bIsDrawing:1;
148 uint8 bLaunchTimer:1;
149
150 FTimerHandle ComputeTimer;
151
152 FVector2D PreviousDotPosition;
153};
meta
Definition GestureRecognizerComp.h:274
ClassGroup
Definition GestureRecognizerComp.h:274
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnShapeDetectionFailedSignature)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnShapeDetectionSuccessSignature, const UVirtualShape *, Asset)
Definition TouchInterfaceListener.h:16
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override
Definition TouchInterfaceListener.cpp:156
virtual void OnTouchEnded(const int32 FingerIndex, const FVector2D Location)
Definition TouchInterfaceListener.cpp:147
virtual bool OnTouchStarted(const int32 FingerIndex, const FVector2D Location)
Definition TouchInterfaceListener.cpp:135
virtual void HandleOnOrientationChanged()
Definition TouchInterfaceListener.cpp:161
virtual void BeginPlay() override
Definition TouchInterfaceListener.cpp:68
virtual void OnTouchMoved(const int32 FingerIndex, const FVector2D Location)
Definition TouchInterfaceListener.cpp:142
Definition VirtualShape.h:233
float Length
Definition ShapeRecognizer.h:17
FDrawing(const FVector2D InPosition)
Definition ShapeRecognizer.h:31
FDrawing()
Definition ShapeRecognizer.h:21
uint8 bHasDirection
Definition ShapeRecognizer.h:19
FVector2D Direction
Definition ShapeRecognizer.h:15
FVector2D StartPosition
Definition ShapeRecognizer.h:13
FVector2D EndPosition
Definition ShapeRecognizer.h:14