From 7457b1d4d3291904d73ce9dd443ab8e0b59138a0 Mon Sep 17 00:00:00 2001
From: Lab1 <account@vr.rwth-aachen.de>
Date: Fri, 3 Mar 2023 21:28:50 +0100
Subject: [PATCH] Merge branch 'fix/maxClickDistance' into 4.27

(cherry picked from commit 39c6c218ce94f2baca2366b0de561ee9db4d7f49)
---
 .../Private/Pawn/BasicVRInteractionComponent.cpp            | 6 ++----
 .../RWTHVRToolkit/Public/Pawn/BasicVRInteractionComponent.h | 6 +++---
 2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/Source/RWTHVRToolkit/Private/Pawn/BasicVRInteractionComponent.cpp b/Source/RWTHVRToolkit/Private/Pawn/BasicVRInteractionComponent.cpp
index 1ab44108..6fa1b158 100644
--- a/Source/RWTHVRToolkit/Private/Pawn/BasicVRInteractionComponent.cpp
+++ b/Source/RWTHVRToolkit/Private/Pawn/BasicVRInteractionComponent.cpp
@@ -43,6 +43,7 @@ void UBasicVRInteractionComponent::BeginPlay()
 	
 	//WidgetInteractionComponent
 	InteractionDistance = MaxClickDistance;
+	InteractionRay->SetRelativeScale3D(FVector(MaxClickDistance / 100.0f, 0.5f, 0.5f)); //the ray model has a length of 100cm (and is a bit too big in Y/Z dir)
 	SetInteractionRayVisibility(InteractionRayVisibility);
 }
 
@@ -196,16 +197,13 @@ void UBasicVRInteractionComponent::TickComponent(float DeltaTime, ELevelTick Tic
 	LastActorHit = HitActor; // Store the actor that was hit to have access to it in the next frame as well
 }
 
-void UBasicVRInteractionComponent::Initialize(USceneComponent* RayEmitter, float InMaxGrabDistance, float InMaxClickDistance)
+void UBasicVRInteractionComponent::Initialize(USceneComponent* RayEmitter)
 {
 	if(InteractionRayEmitter) return; /* Return if already initialized */
 
 	InteractionRayEmitter = RayEmitter;
-	MaxGrabDistance = InMaxGrabDistance;
-	MaxClickDistance = InMaxClickDistance;
 
 	InteractionRay->AttachToComponent(RayEmitter, FAttachmentTransformRules::KeepRelativeTransform);
-	InteractionRay->SetRelativeScale3D(FVector(MaxClickDistance/100.0f, 1.0f, 1.0f)); //the ray model has a length of 100cm
 	this->AttachToComponent(RayEmitter, FAttachmentTransformRules::KeepRelativeTransform);
 }
 
diff --git a/Source/RWTHVRToolkit/Public/Pawn/BasicVRInteractionComponent.h b/Source/RWTHVRToolkit/Public/Pawn/BasicVRInteractionComponent.h
index 9b100179..e62fbf21 100644
--- a/Source/RWTHVRToolkit/Public/Pawn/BasicVRInteractionComponent.h
+++ b/Source/RWTHVRToolkit/Public/Pawn/BasicVRInteractionComponent.h
@@ -36,13 +36,13 @@ public:
 	// Called every frame
 	virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
 
-	UPROPERTY(BlueprintReadWrite) float MaxGrabDistance = 50;
-	UPROPERTY(BlueprintReadWrite) float MaxClickDistance = 500;
+	UPROPERTY(EditAnywhere,BlueprintReadWrite) float MaxGrabDistance = 50;
+	UPROPERTY(EditAnywhere,BlueprintReadWrite) float MaxClickDistance = 500;
 	// Enable this if you want to interact with Targetable classes or use EInteractionRayVisibility::VisibleOnHoverOnly
 	UPROPERTY(EditAnywhere) bool bCanRaytraceEveryTick = false;
 	UPROPERTY(EditAnywhere) TEnumAsByte<EInteractionRayVisibility> InteractionRayVisibility = EInteractionRayVisibility::Invisible;
 
-	UFUNCTION(BlueprintCallable) void Initialize(USceneComponent* RayEmitter, float InMaxGrabDistance = 50, float InMaxClickDistance = 500);
+	UFUNCTION(BlueprintCallable) void Initialize(USceneComponent* RayEmitter);
 	
 	UFUNCTION(BlueprintCallable, BlueprintPure) AActor* GetGrabbedActor() const { return GrabbedActor;}
 	UFUNCTION(BlueprintCallable, BlueprintPure) USceneComponent* GetInteractionRayEmitter() const { return InteractionRayEmitter;	}
-- 
GitLab