From 6aa4757447ee51be720f2cc3a95bd6fca48aad49 Mon Sep 17 00:00:00 2001
From: Ehret <jw210150@WIN.RZ.RWTH-AACHEN.DE>
Date: Fri, 8 Apr 2022 12:27:18 +0200
Subject: [PATCH] update right hand, so interaction component is attaches to
 the mouse

---
 .../Private/Pawn/VirtualRealityPawn.cpp          | 16 ++++++++++++++++
 .../Public/Pawn/VirtualRealityPawn.h             |  1 +
 2 files changed, 17 insertions(+)

diff --git a/Source/RWTHVRToolkit/Private/Pawn/VirtualRealityPawn.cpp b/Source/RWTHVRToolkit/Private/Pawn/VirtualRealityPawn.cpp
index eaccfb7c..06e03060 100644
--- a/Source/RWTHVRToolkit/Private/Pawn/VirtualRealityPawn.cpp
+++ b/Source/RWTHVRToolkit/Private/Pawn/VirtualRealityPawn.cpp
@@ -99,6 +99,18 @@ void AVirtualRealityPawn::SetCameraOffset() const
 	CameraComponent->SetWorldLocationAndRotation(Location, Rotation);
 }
 
+void AVirtualRealityPawn::UpdateRightHandForDesktopInteraction()
+{
+	APlayerController* PC = Cast<APlayerController>(GetController());
+	if (PC)
+	{
+		FVector MouseLocation, MouseDirection;
+		PC->DeprojectMousePositionToWorld(MouseLocation, MouseDirection);
+		FRotator HandOrientation = MouseDirection.ToOrientationRotator();
+		RightHand->SetWorldRotation(HandOrientation);
+	}
+}
+
 void AVirtualRealityPawn::OnForward_Implementation(float Value)
 {
 	if (RightHand)
@@ -130,6 +142,10 @@ void AVirtualRealityPawn::OnTurnRate_Implementation(float Rate)
 	{
 		AddControllerYawInput(Rate * BaseTurnRate * GetWorld()->GetDeltaSeconds() * CustomTimeDilation);
 	}
+	if (UVirtualRealityUtilities::IsDesktopMode())
+	{
+		UpdateRightHandForDesktopInteraction();
+	}
 }
 
 void AVirtualRealityPawn::OnLookUpRate_Implementation(float Rate)
diff --git a/Source/RWTHVRToolkit/Public/Pawn/VirtualRealityPawn.h b/Source/RWTHVRToolkit/Public/Pawn/VirtualRealityPawn.h
index 4153d539..0d46c376 100644
--- a/Source/RWTHVRToolkit/Public/Pawn/VirtualRealityPawn.h
+++ b/Source/RWTHVRToolkit/Public/Pawn/VirtualRealityPawn.h
@@ -55,4 +55,5 @@ protected:
 	bool bApplyDesktopRotation = false;
 
 	void SetCameraOffset() const;
+	void UpdateRightHandForDesktopInteraction();
 };
-- 
GitLab