Touch Interface Designer 2025.2
Create touch interface with a visual editor and manage all mobile inputs like gestures
Loading...
Searching...
No Matches
LCInputModifier.h
Go to the documentation of this file.
1// Copyright 2023 Lost in Game Studio. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "UObject/Object.h"
7#include "Curves/CurveFloat.h"
8#include "LCInputModifier.generated.h"
9
10struct FInputActionValue;
11
12//TODO: Normally, with instanced object, we should use EditInstanceOnly on property but in LayoutComponentLogic, it doesn't work.
13//So we use EditAnywhere
14
15// Base class for Virtual Input Modifier
16UCLASS(Abstract, Blueprintable, EditInlineNew, CollapseCategories)
17class TOUCHINTERFACE_API ULCInputModifier : public UObject
18{
19 GENERATED_BODY()
20
21public:
29 UFUNCTION(Category = "Modifier", BlueprintCallable, BlueprintNativeEvent)
30 FVector2D ModifyRaw(const FVector2D CurrentValue, const float DeltaTime);
31
32 UFUNCTION(Category = "Modifier", BlueprintCallable, BlueprintNativeEvent)
33 void ModifyInputActionValue(FInputActionValue& Value, const float DeltaTime);
34
35protected:
36 virtual FVector2D ModifyRaw_Implementation(const FVector2D CurrentValue, const float DeltaTime)
37 {
38 return CurrentValue;
39 }
40
41 virtual void ModifyInputActionValue_Implementation(FInputActionValue& Value, const float DeltaTime) {}
42};
43
44// Allow you to scale the virtual input value
46class UVirtualInputScalar : public ULCInputModifier
47{
48 GENERATED_BODY()
49
50public:
51 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Settings)
52 FVector2D Scalar = FVector2D::One();
53
54private:
55 UPROPERTY()
56 bool bTest = false;
57
58public:
59 virtual FVector2D ModifyRaw_Implementation(const FVector2D CurrentValue, const float DeltaTime) override;
60
61 virtual void ModifyInputActionValue_Implementation(FInputActionValue& Value, const float DeltaTime) override;
62};
63
64// Smooth virtual input value with delta time
66class UVirtualInputTurnRate : public ULCInputModifier
67{
68 GENERATED_BODY()
69
70public:
71 // Use horizontal and vertical turn rate
72 UPROPERTY(Category=Settings, EditAnywhere, BlueprintReadWrite)
73 uint8 bByAxis:1;
74
75 UPROPERTY(Category=Settings, EditAnywhere, BlueprintReadWrite, meta=(ClampMin=0.0f, EditCondition="bByAxis==false", EditConditionHides))
76 float TurnRate = 30.0f;
77
78 UPROPERTY(Category=Settings, EditAnywhere, BlueprintReadWrite, meta=(ClampMin=0.0f, EditCondition="bByAxis==true", EditConditionHides))
79 float HorizontalTurnRate = 30.0f;
80
81 UPROPERTY(Category=Settings, EditAnywhere, BlueprintReadWrite, meta=(ClampMin=0.0f, EditCondition="bByAxis==true", EditConditionHides))
82 float VerticalTurnRate = 30.0f;
83
84 virtual FVector2D ModifyRaw_Implementation(const FVector2D CurrentValue, const float DeltaTime) override;
85
86 virtual void ModifyInputActionValue_Implementation(FInputActionValue& Value, const float DeltaTime) override;
87};
88
89// Invert positive value (ex: if X=1 and bX == true, so X=-1)
91class UVirtualInputNegate : public ULCInputModifier
92{
93 GENERATED_BODY()
94
95public:
96 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Settings)
97 bool bX = false;
98
99 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Settings)
100 bool bY = false;
101
102 virtual FVector2D ModifyRaw_Implementation(const FVector2D CurrentValue, const float DeltaTime) override;
103
104 virtual void ModifyInputActionValue_Implementation(FInputActionValue& Value, const float DeltaTime) override;
105};
106
107// Invert virtual input axis
108UCLASS(NotBlueprintable, MinimalAPI, meta=(DisplayName="Swizzle"))
109class UVirtualInputSwizzleAxis : public ULCInputModifier
110{
111 GENERATED_BODY()
112
113public:
114 virtual FVector2D ModifyRaw_Implementation(const FVector2D CurrentValue, const float DeltaTime) override;
115
116 virtual void ModifyInputActionValue_Implementation(FInputActionValue& Value, const float DeltaTime) override;
117};
118
119// Scale virtual input value by curve
121class UVirtualInputCurve : public ULCInputModifier
122{
123 GENERATED_BODY()
124
125public:
126 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Settings, meta=(DisplayThumbnail="false"))
127 TObjectPtr<UCurveFloat> Curve;
128
129 virtual FVector2D ModifyRaw_Implementation(const FVector2D CurrentValue, const float DeltaTime) override;
130
131 virtual void ModifyInputActionValue_Implementation(FInputActionValue& Value, const float DeltaTime) override;
132};
EditInlineNew
Definition ComponentDecorator_Animation.h:40
Abstract
Definition ComponentDecorator_Animation.h:40
Blueprintable
Definition ComponentDecorator_Animation.h:40
NotBlueprintable
Definition DEPRECATED_LayoutSubsystem.h:23
DisplayName
Definition DecoratorRotationAnim.h:15
meta
Definition GestureRecognizerComp.h:274
MinimalAPI
Definition LCInputModifier.h:45
Definition LCInputModifier.h:18
virtual FVector2D ModifyRaw_Implementation(const FVector2D CurrentValue, const float DeltaTime)
Definition LCInputModifier.h:36
BlueprintNativeEvent void ModifyInputActionValue(FInputActionValue &Value, const float DeltaTime)
BlueprintCallable
Definition LCInputModifier.h:29
virtual void ModifyInputActionValue_Implementation(FInputActionValue &Value, const float DeltaTime)
Definition LCInputModifier.h:41
BlueprintNativeEvent FVector2D ModifyRaw(const FVector2D CurrentValue, const float DeltaTime)
Category
Definition LCInputModifier.h:29