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