From c4e230d66d767acc74bb0f75011f9335703bdf87 Mon Sep 17 00:00:00 2001
From: Jonathan Wendt <wendt@vr.rwth-aachen.de>
Date: Fri, 15 Mar 2019 15:51:37 +0100
Subject: [PATCH] Add VR Navigation Mode to disable Flystick flying

---
 .../Private/VirtualRealityPawn.cpp                   | 12 +++++++++---
 .../Public/VirtualRealityPawn.h                      |  8 ++++++++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp b/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp
index 9ea06e43..93e443b2 100644
--- a/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp
+++ b/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp
@@ -39,11 +39,17 @@ AVirtualRealityPawn::AVirtualRealityPawn(const FObjectInitializer& ObjectInitial
 
 void                    AVirtualRealityPawn::OnForward_Implementation   (float Value)
 {
-  AddMovementInput(Forward->GetForwardVector(), Value);
+  if (NavigationMode == EVRNavigationModes::NAV_MODE_FLY)
+  {
+    AddMovementInput(Forward->GetForwardVector(), Value);
+  }
 }
-void                    AVirtualRealityPawn::OnRight_Implementation     (float Value)
+void                    AVirtualRealityPawn::OnRight_Implementation(float Value)
 {
-  AddMovementInput(Forward->GetRightVector  (), Value);
+  if (NavigationMode == EVRNavigationModes::NAV_MODE_FLY)
+  {
+    AddMovementInput(Forward->GetRightVector(), Value);
+  }
 }
 void                    AVirtualRealityPawn::OnTurnRate_Implementation  (float Rate )
 {
diff --git a/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h b/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h
index 0569fdfa..da1b5403 100644
--- a/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h
+++ b/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h
@@ -10,6 +10,12 @@
 
 #include "VirtualRealityPawn.generated.h"
 
+UENUM(BlueprintType)
+enum class EVRNavigationModes : uint8{
+  NAV_MODE_NONE UMETA(DisplayName = "Navigation Mode None"),
+  NAV_MODE_FLY UMETA(DisplayName = "Navigation Mode Fly")
+};
+
 UCLASS()
 class DISPLAYCLUSTEREXTENSIONS_API AVirtualRealityPawn : public ADisplayClusterPawn
 {
@@ -23,6 +29,8 @@ public:
   UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Pawn") void OnFire      (bool  Pressed);
   UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Pawn") void OnAction    (bool  Pressed, int32 Index);
 
+  UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pawn") EVRNavigationModes NavigationMode = EVRNavigationModes::NAV_MODE_FLY;
+
 protected:
   DECLARE_DELEGATE_OneParam (FFireDelegate  , bool);
   DECLARE_DELEGATE_TwoParams(FActionDelegate, bool, int32);
-- 
GitLab