// Copyright Team Lumi. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "UniStrokeResult.h" #include "UniStrokeTemplate.h" #include "UniStrokeRecognizer.generated.h" static constexpr int NumTemplates = 16; static const float Diagonal = FMath::Sqrt(2 * FMath::Square(SquareSize)); static const float HalfDiagonal = 0.5 * Diagonal; static constexpr float AngleRange = FMath::DegreesToRadians(45.0); static constexpr float AnglePrecision = FMath::DegreesToRadians(2.0); USTRUCT() struct WIZARDINGCENTRAL_API FUniStrokeRecognizer { GENERATED_BODY() FUniStrokeRecognizer(); ~FUniStrokeRecognizer(); FUniStrokeResult Recognize(const TArray& VectorPoints, const bool& UseProtractor); void AddTemplate(const FString& Name, const TArray& VectorPoints); void Reset(); TArray Templates; };