diff --git a/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp b/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp index 3cc59dc25facb9414c3e49ffd06dc87f11f5a3c8..418b350fa7ce3b798516a43195d75afcc189d45b 100644 --- a/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp +++ b/Source/RWTHVRToolkit/Private/Utility/VirtualRealityUtilities.cpp @@ -1,13 +1,16 @@ #include "Utility/VirtualRealityUtilities.h" -#include "Cluster/IDisplayClusterClusterManager.h" -#include "Components/DisplayClusterCameraComponent.h" -#include "Config/IDisplayClusterConfigManager.h" -#include "DisplayClusterRootActor.h" -#include "DisplayClusterConfigurationTypes.h" +#if PLATFORM_SUPPORTS_NDISPLAY + #include "Cluster/IDisplayClusterClusterManager.h" + #include "Components/DisplayClusterCameraComponent.h" + #include "Config/IDisplayClusterConfigManager.h" + #include "DisplayClusterRootActor.h" + #include "DisplayClusterConfigurationTypes.h" + #include "Game/IDisplayClusterGameManager.h" + #include "IDisplayCluster.h" +#endif + #include "Engine/Engine.h" -#include "Game/IDisplayClusterGameManager.h" -#include "IDisplayCluster.h" #include "IXRTrackingSystem.h" bool UVirtualRealityUtilities::IsDesktopMode() @@ -16,7 +19,11 @@ bool UVirtualRealityUtilities::IsDesktopMode() } bool UVirtualRealityUtilities::IsRoomMountedMode() { +#if PLATFORM_SUPPORTS_NDISPLAY return IDisplayCluster::Get().GetOperationMode() == EDisplayClusterOperationMode::Cluster; +#else + return false; +#endif } bool UVirtualRealityUtilities::IsHeadMountedMode() { @@ -25,34 +32,47 @@ bool UVirtualRealityUtilities::IsHeadMountedMode() bool UVirtualRealityUtilities::IsCave() { +#if PLATFORM_SUPPORTS_NDISPLAY if(!IsRoomMountedMode()) return false; const UDisplayClusterConfigurationData* ClusterConfig = IDisplayCluster::Get().GetConfigMgr()->GetConfig(); return ClusterConfig->CustomParameters.Contains("Hardware_Platform") && ClusterConfig->CustomParameters.Find("Hardware_Platform")->Equals("aixcave", ESearchCase::IgnoreCase); +#else + return false; +#endif } bool UVirtualRealityUtilities::IsTdw() { +#if PLATFORM_SUPPORTS_NDISPLAY if(!IsRoomMountedMode()) return false; const UDisplayClusterConfigurationData* ClusterConfig = IDisplayCluster::Get().GetConfigMgr()->GetConfig(); return ClusterConfig->CustomParameters.Contains("Hardware_Platform") && ClusterConfig->CustomParameters.Find("Hardware_Platform")->Equals("TiledDisplayWall", ESearchCase::IgnoreCase); +#else + return false; +#endif } bool UVirtualRealityUtilities::IsRolv() { +#if PLATFORM_SUPPORTS_NDISPLAY if(!IsRoomMountedMode()) return false; const UDisplayClusterConfigurationData* ClusterConfig = IDisplayCluster::Get().GetConfigMgr()->GetConfig(); return ClusterConfig->CustomParameters.Contains("Hardware_Platform") && ClusterConfig->CustomParameters.Find("Hardware_Platform")->Equals("ROLV", ESearchCase::IgnoreCase); +#else + return false; +#endif } /* Return true on the Master in cluster mode and in a normal desktop session. Otherwise false */ bool UVirtualRealityUtilities::IsMaster() { +#if PLATFORM_SUPPORTS_NDISPLAY if (!IDisplayCluster::IsAvailable()) { return true; @@ -63,6 +83,9 @@ bool UVirtualRealityUtilities::IsMaster() return true; // if we are not in cluster mode, we are always the master } return Manager->IsMaster() || !Manager->IsSlave(); +#else + return true; +#endif } bool UVirtualRealityUtilities::IsSlave() @@ -72,24 +95,40 @@ bool UVirtualRealityUtilities::IsSlave() FString UVirtualRealityUtilities::GetNodeName() { +#if PLATFORM_SUPPORTS_NDISPLAY return IsRoomMountedMode() ? IDisplayCluster::Get().GetClusterMgr()->GetNodeId() : FString(TEXT("Localhost")); +#else + return FString(TEXT("Localhost")); +#endif } float UVirtualRealityUtilities::GetEyeDistance() { +#if PLATFORM_SUPPORTS_NDISPLAY return IDisplayCluster::Get().GetGameMgr()->GetRootActor()->GetDefaultCamera()->GetInterpupillaryDistance(); +#else + return 0; +#endif } -EDisplayClusterEyeStereoOffset UVirtualRealityUtilities::GetNodeEyeType() +EEyeStereoOffset UVirtualRealityUtilities::GetNodeEyeType() { - return IDisplayCluster::Get().GetGameMgr()->GetRootActor()->GetDefaultCamera()->GetStereoOffset(); +#if PLATFORM_SUPPORTS_NDISPLAY + return static_cast<EEyeStereoOffset>(IDisplayCluster::Get().GetGameMgr()->GetRootActor()->GetDefaultCamera()->GetStereoOffset()); +#else + return None; +#endif } -UDisplayClusterSceneComponent* UVirtualRealityUtilities::GetClusterComponent(const FString& Name) +USceneComponent* UVirtualRealityUtilities::GetClusterComponent(const FString& Name) { +#if PLATFORM_SUPPORTS_NDISPLAY return IDisplayCluster::Get().GetGameMgr()->GetRootActor()->GetComponentById(Name); +#else + return nullptr; +#endif } -UDisplayClusterSceneComponent* UVirtualRealityUtilities::GetNamedClusterComponent(const ENamedClusterComponent& Component) +USceneComponent* UVirtualRealityUtilities::GetNamedClusterComponent(const ENamedClusterComponent& Component) { switch(Component) { @@ -103,7 +142,7 @@ UDisplayClusterSceneComponent* UVirtualRealityUtilities::GetNamedClusterComponen case ENamedClusterComponent::NCC_TDW_ORIGIN: return GetClusterComponent("tdw_origin_floor"); case ENamedClusterComponent::NCC_TDW_CENTER: return GetClusterComponent("tdw_center"); case ENamedClusterComponent::NCC_TRACKING_ORIGIN: - UDisplayClusterSceneComponent* Result; + USceneComponent* Result; if((Result = GetClusterComponent("cave_origin"))) return Result; if((Result = GetClusterComponent("rolv_origin"))) return Result; if((Result = GetClusterComponent("tdw_origin_floor"))) return Result; diff --git a/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h b/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h index 07273f16d7e78710f18103abacccc5be96941b10..d96d066b0045f4909a1c17c44969455728601369 100644 --- a/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h +++ b/Source/RWTHVRToolkit/Public/Utility/VirtualRealityUtilities.h @@ -1,6 +1,5 @@ #pragma once -#include "Components/DisplayClusterCameraComponent.h" #include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "VirtualRealityUtilities.generated.h" @@ -27,6 +26,14 @@ enum class ENamedClusterComponent : uint8 NCC_TRACKING_ORIGIN UMETA(DisplayName = "CAVE/ROLV/TDW Origin") }; +UENUM() +enum EEyeStereoOffset +{ + None, + Left, + Right +}; + UCLASS() class RWTHVRTOOLKIT_API UVirtualRealityUtilities : public UBlueprintFunctionLibrary { @@ -46,9 +53,9 @@ public: UFUNCTION(BlueprintPure, Category = "DisplayCluster") static FString GetNodeName(); UFUNCTION(BlueprintPure, Category = "DisplayCluster") static float GetEyeDistance(); - UFUNCTION(BlueprintPure, Category = "DisplayCluster") static EDisplayClusterEyeStereoOffset GetNodeEyeType(); + UFUNCTION(BlueprintPure, Category = "DisplayCluster") static EEyeStereoOffset GetNodeEyeType(); //Get Compenent of Display Cluster by it's name, which is specified in the nDisplay config - UFUNCTION(BlueprintPure, BlueprintCallable, Category = "DisplayCluster") static UDisplayClusterSceneComponent* GetClusterComponent(const FString& Name); - UFUNCTION(BlueprintPure, BlueprintCallable, Category = "DisplayCluster") static UDisplayClusterSceneComponent* GetNamedClusterComponent(const ENamedClusterComponent& Component); + UFUNCTION(BlueprintPure, BlueprintCallable, Category = "DisplayCluster") static USceneComponent* GetClusterComponent(const FString& Name); + UFUNCTION(BlueprintPure, BlueprintCallable, Category = "DisplayCluster") static USceneComponent* GetNamedClusterComponent(const ENamedClusterComponent& Component); }; diff --git a/Source/RWTHVRToolkit/RWTHVRToolkit.Build.cs b/Source/RWTHVRToolkit/RWTHVRToolkit.Build.cs index c2703457413cc20fb359f66262c73e04294b4b29..dae5948601267b19b931b4276a4f5ae923fa7627 100644 --- a/Source/RWTHVRToolkit/RWTHVRToolkit.Build.cs +++ b/Source/RWTHVRToolkit/RWTHVRToolkit.Build.cs @@ -2,57 +2,50 @@ using UnrealBuildTool; public class RWTHVRToolkit : ModuleRules { - public RWTHVRToolkit(ReadOnlyTargetRules Target) : base(Target) - { - PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; - - PublicIncludePaths.AddRange( - new string[] - { - - } - ); - - - PrivateIncludePaths.AddRange( - new string[] - { - - } - ); - - - PublicDependencyModuleNames.AddRange( - new string[] - { - "Core", - "CoreUObject", - "DisplayCluster", - "Engine", - "HeadMountedDisplay", - "InputCore", - "UMG", - "Slate", - "SlateCore", - "DeveloperSettings", - "Http" - } - ); - - - PrivateDependencyModuleNames.AddRange( - new string[] - { - - } - ); - - - DynamicallyLoadedModuleNames.AddRange( - new string[] - { - - } - ); - } + public RWTHVRToolkit(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicIncludePaths.AddRange( + new string[]{} + ); + + PrivateIncludePaths.AddRange( + new string[]{} + ); + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "HeadMountedDisplay", + "InputCore", + "UMG", + "Slate", + "SlateCore", + "DeveloperSettings", + "Http" + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[]{} + ); + + DynamicallyLoadedModuleNames.AddRange( + new string[]{} + ); + + if(Target.Platform == UnrealTargetPlatform.Win64 || Target.Platform == UnrealTargetPlatform.Linux) + { + //PublicDependencyModuleNames.Add("DisplayCluster"); + PublicDefinitions.Add("PLATFORM_SUPPORTS_NDISPLAY=0"); + } + else + { + PublicDefinitions.Add("PLATFORM_SUPPORTS_NDISPLAY=0"); + } + } } diff --git a/Source/RWTHVRToolkitEditor/RWTHVRToolkitEditor.Build.cs b/Source/RWTHVRToolkitEditor/RWTHVRToolkitEditor.Build.cs index f2b52dc9f12da22f9ae1408f9a80139fd9fb654a..a1e2b6c35cb009d4cd98f0050d317e5d9941879e 100644 --- a/Source/RWTHVRToolkitEditor/RWTHVRToolkitEditor.Build.cs +++ b/Source/RWTHVRToolkitEditor/RWTHVRToolkitEditor.Build.cs @@ -11,7 +11,6 @@ public class RWTHVRToolkitEditor : ModuleRules { "Core", "CoreUObject", - "DisplayCluster", "Engine", "UnrealEd", "ComponentVisualizers",