diff --git a/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp b/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp index 83caec4ba4c7aa5da751329224cc38656d64bf94..799dcfa2e1de5080fc684891807a4f89ba0536cb 100644 --- a/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp +++ b/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp @@ -12,11 +12,13 @@ #include "Engine/Engine.h" #include "IXRTrackingSystem.h" +#include "IHeadMountedDisplay.h" bool UVirtualRealityUtilities::IsDesktopMode() { return !IsRoomMountedMode() && !IsHeadMountedMode(); } + bool UVirtualRealityUtilities::IsRoomMountedMode() { #if PLATFORM_SUPPORTS_NDISPLAY @@ -25,6 +27,7 @@ bool UVirtualRealityUtilities::IsRoomMountedMode() return false; #endif } + bool UVirtualRealityUtilities::IsHeadMountedMode() { return GEngine->XRSystem.IsValid() && GEngine->XRSystem->IsHeadTrackingAllowed(); @@ -101,14 +104,22 @@ FString UVirtualRealityUtilities::GetNodeName() return FString(TEXT("Localhost")); #endif } + float UVirtualRealityUtilities::GetEyeDistance() { + if(IsHeadMountedMode()) + { + return GEngine->XRSystem->GetHMDDevice()->GetInterpupillaryDistance(); + } + else + { #if PLATFORM_SUPPORTS_NDISPLAY - ADisplayClusterRootActor* RootActor = IDisplayCluster::Get().GetGameMgr()->GetRootActor(); - return (RootActor) ? RootActor->GetDefaultCamera()->GetInterpupillaryDistance() : 0; + ADisplayClusterRootActor* RootActor = IDisplayCluster::Get().GetGameMgr()->GetRootActor(); + return (RootActor) ? RootActor->GetDefaultCamera()->GetInterpupillaryDistance() : 0.0f; #else - return 0; + return 0.0f; #endif + } } EEyeStereoOffset UVirtualRealityUtilities::GetNodeEyeType() diff --git a/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h b/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h index ac1d18728792013b9c759fdefe3582ed12bad7c3..23689665292042eb4ec13111e8453089b3d02b7d 100644 --- a/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h +++ b/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h @@ -52,6 +52,7 @@ public: UFUNCTION(BlueprintPure, Category = "DisplayCluster") static bool IsSlave(); UFUNCTION(BlueprintPure, Category = "DisplayCluster") static FString GetNodeName(); + /* Distance in meters */ UFUNCTION(BlueprintPure, Category = "DisplayCluster") static float GetEyeDistance(); UFUNCTION(BlueprintPure, Category = "DisplayCluster") static EEyeStereoOffset GetNodeEyeType();