5#include "CoreMinimal.h"
6#include "Components/ActorComponent.h"
7#include "MotionRecognizer.generated.h"
41DECLARE_DYNAMIC_MULTICAST_DELEGATE_FiveParams(FOnSimpleMotionDelegate, int32, PlayerIndex, FVector, Acceleration, FVector, Gravity, FVector, RotationRate, FVector, Tilt);
49UCLASS(
ClassGroup=(TouchInterfaceDesigner),
meta=(BlueprintSpawnableComponent))
50class TOUCHINTERFACE_API UMotionRecognizer :
public UActorComponent
60 virtual void BeginPlay()
override;
64 virtual void TickComponent(
float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
override;
67 UFUNCTION(Category=
"Motion Manager", BlueprintCallable)
68 virtual void Calibrate();
74 UFUNCTION(Category=
"Motion Manager", BlueprintCallable)
75 virtual void Recenter(
const bool bRememberOffset,
const FRotator CurrentOffset);
78 void QuickAccDetector();
80 void MotionBasedRotation(
const float DeltaTime);
83 UPROPERTY(Category=
"Input", EditAnywhere, BlueprintReadOnly)
84 TEnumAsByte<EAutoReceiveInput::Type> AutoReceiveInput;
88 UPROPERTY(Category=
"Quick Acceleration", EditAnywhere, BlueprintReadWrite)
89 float QuickAccelerationThreshold;
93 UPROPERTY(Category=
"Quick Acceleration", EditAnywhere, BlueprintReadWrite,
meta=(ClampMin=0.25f))
94 float DelayBetweenQuickAccDetection;
98 UPROPERTY(Category=
"Shake", EditAnywhere, BlueprintReadWrite)
99 float ShakeDetectionThreshold;
103 UPROPERTY(Category=
"Shake", EditAnywhere, BlueprintReadWrite,
meta=(ClampMin=0.25f))
104 float ShakeAllowedTime;
108 UPROPERTY(Category=
"Shake", EditAnywhere, BlueprintReadWrite)
109 uint8 bCallShakeEachFrame:1;
113 UPROPERTY(Category=
"Motion Based Rotation", EditAnywhere, BlueprintReadWrite)
122 UPROPERTY(Category=
"Motion Based Rotation", EditAnywhere, BlueprintReadWrite)
125 UPROPERTY(Category=
"Motion Based Rotation", EditAnywhere, BlueprintReadWrite)
126 uint8 bLimitRotation:1;
129 UPROPERTY(Category=
"Motion Based Rotation", EditAnywhere, BlueprintReadWrite)
130 FVector MaxAmplitude;
133 uint8 bRememberLimit:1;
138 UPROPERTY(Category=
"Motion Manager", BlueprintAssignable)
139 FOnSimpleMotionDelegate OnIMUInputState;
145 UPROPERTY(Category=
"Motion Manager", BlueprintAssignable)
146 FOnQuickAccelerationDelegate OnQuickAcceleration;
148 UPROPERTY(Category=
"Motion Manager", BlueprintAssignable)
149 FOnShakeMotionDelegate OnShakeStart;
151 UPROPERTY(Category=
"Motion Manager", BlueprintAssignable)
152 FOnShakeMotionDelegate OnShaking;
154 UPROPERTY(Category=
"Motion Manager", BlueprintAssignable)
155 FOnShakeMotionDelegate OnShakeEnd;
159 UPROPERTY(Category=
"Motion Manager", BlueprintAssignable)
160 FOnMotionDelegate OnMotionBasedRotation;
166 APlayerController* PlayerController;
171 FVector RotationRate;
172 FVector Acceleration;
174 TArray<FVector> TiltValues;
176 uint8 bCanDetectTap:1;
177 uint8 bShakeDetected:1;
178 uint8 bAccelerationDetected:1;
180 FTimerHandle TapDetectorTimerHandle;
181 FTimerHandle StabilizationTimerHandle;
182 FTimerHandle ShakeTimerHandle;
185 double LastQuickAccTime;
191 EShake ShakeDirectionExpected;
193 float LastAccelerationZ;
195 FRotator CameraRotation;
BlueprintType
Definition ComponentDecorator_Animation.h:40
meta
Definition GestureRecognizerComp.h:274
ClassGroup
Definition GestureRecognizerComp.h:274
DECLARE_DYNAMIC_MULTICAST_DELEGATE_FiveParams(FOnSimpleMotionDelegate, int32, PlayerIndex, FVector, Acceleration, FVector, Gravity, FVector, RotationRate, FVector, Tilt)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnShakeMotionDelegate, int32, PlayerIndex, EShake, ShakeType)
EShake
Definition MotionRecognizer.h:11
@ Vertical
Definition MotionRecognizer.h:13
@ Horizontal
Definition MotionRecognizer.h:12
@ BackAndForth
Definition MotionRecognizer.h:14
EAccelerationType
Definition MotionRecognizer.h:19
@ Down
Definition MotionRecognizer.h:38
@ Up
Definition MotionRecognizer.h:35
@ Forward
Definition MotionRecognizer.h:29
@ Right
Definition MotionRecognizer.h:26
@ Left
Definition MotionRecognizer.h:23
@ UMETA
Definition MotionRecognizer.h:20
@ Backward
Definition MotionRecognizer.h:32