diff --git a/Source/RWTHVRToolkit/Private/Pawn/VirtualRealityPawn.cpp b/Source/RWTHVRToolkit/Private/Pawn/VirtualRealityPawn.cpp index eaccfb7c69919655384400bbcfb5f04509d35ca3..06e03060955c7230298531463b4cf02deff8e098 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 4153d539a8635b23482d414d6b95df064661a92b..0d46c37621e5b519e2e463b8287579530cbccb73 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(); };