diff --git a/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp b/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp index 9390d1ad170b15cbe434c528d491b8f7a09f03c5..4f272da0fdf5b8fbf2e3d768a6d3d685faf1ac88 100644 --- a/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp +++ b/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp @@ -9,6 +9,7 @@ #include "Kismet/GameplayStatics.h" #include "DisplayClusterSettings.h" #include "HeadMountedDisplayFunctionLibrary.h" +#include "IDisplayClusterConfigManager.h" #include "IDisplayCluster.h" #include "IXRTrackingSystem.h" @@ -98,6 +99,14 @@ bool AVirtualRealityPawn::IsHeadMountedMode return GEngine->XRSystem.IsValid() && GEngine->XRSystem->IsHeadTrackingAllowed(); } +FString AVirtualRealityPawn::GetNodeName () +{ + return IsRoomMountedMode() ? IDisplayCluster::Get().GetClusterMgr()->GetNodeId() : FString(TEXT("Localhost")); +} +float AVirtualRealityPawn::GetEyeDistance() +{ + return IDisplayCluster::Get().GetConfigMgr()->GetConfigStereo().EyeDist; +} float AVirtualRealityPawn::GetBaseTurnRate () const { @@ -176,7 +185,7 @@ void AVirtualRealityPawn::BeginPlay LeftHand = Flystick; RightHand = Flystick; - // TODO + RootComponent->SetWorldLocation(FVector(0, 2, 0), false, nullptr, ETeleportType::None); } else if (IsHeadMountedMode()) { @@ -223,24 +232,25 @@ void AVirtualRealityPawn::SetupPlayerInputComponent Super::SetupPlayerInputComponent(PlayerInputComponent); if (PlayerInputComponent) { - PlayerInputComponent->BindAxis ("MoveForward" , this, &AVirtualRealityPawn::OnForward ); - PlayerInputComponent->BindAxis ("MoveRight" , this, &AVirtualRealityPawn::OnRight ); - PlayerInputComponent->BindAxis ("TurnRate" , this, &AVirtualRealityPawn::OnTurnRate ); - PlayerInputComponent->BindAxis ("LookUpRate" , this, &AVirtualRealityPawn::OnLookUpRate ); - - PlayerInputComponent->BindAction<FFireDelegate> ("Fire" , IE_Pressed , this, &AVirtualRealityPawn::OnFire , true ); - PlayerInputComponent->BindAction<FActionDelegate>("Action1" , IE_Pressed , this, &AVirtualRealityPawn::OnAction , true , 1); - PlayerInputComponent->BindAction<FActionDelegate>("Action2" , IE_Pressed , this, &AVirtualRealityPawn::OnAction , true , 2); - PlayerInputComponent->BindAction<FActionDelegate>("Action3" , IE_Pressed , this, &AVirtualRealityPawn::OnAction , true , 3); - PlayerInputComponent->BindAction<FActionDelegate>("Action4" , IE_Pressed , this, &AVirtualRealityPawn::OnAction , true , 4); - PlayerInputComponent->BindAction<FActionDelegate>("Action5" , IE_Pressed , this, &AVirtualRealityPawn::OnAction , true , 5); - - PlayerInputComponent->BindAction<FFireDelegate> ("Fire" , IE_Released, this, &AVirtualRealityPawn::OnFire , false ); - PlayerInputComponent->BindAction<FActionDelegate>("Action1" , IE_Released, this, &AVirtualRealityPawn::OnAction , false, 1); - PlayerInputComponent->BindAction<FActionDelegate>("Action2" , IE_Released, this, &AVirtualRealityPawn::OnAction , false, 2); - PlayerInputComponent->BindAction<FActionDelegate>("Action3" , IE_Released, this, &AVirtualRealityPawn::OnAction , false, 3); - PlayerInputComponent->BindAction<FActionDelegate>("Action4" , IE_Released, this, &AVirtualRealityPawn::OnAction , false, 4); - PlayerInputComponent->BindAction<FActionDelegate>("Action5" , IE_Released, this, &AVirtualRealityPawn::OnAction , false, 5); + PlayerInputComponent->BindAxis ("MoveForward" , this, &AVirtualRealityPawn::OnForward ); + PlayerInputComponent->BindAxis ("MoveRight" , this, &AVirtualRealityPawn::OnRight ); + PlayerInputComponent->BindAxis ("TurnRate" , this, &AVirtualRealityPawn::OnTurnRate ); + PlayerInputComponent->BindAxis ("LookUpRate" , this, &AVirtualRealityPawn::OnLookUpRate); + + // The button names are based on the definitions in aixcave_422.cfg. + PlayerInputComponent->BindAction<FFireDelegate> ("nDisplayButton0", IE_Pressed , this, &AVirtualRealityPawn::OnFire , true ); + PlayerInputComponent->BindAction<FActionDelegate>("nDisplayButton1", IE_Pressed , this, &AVirtualRealityPawn::OnAction, true , 1); + PlayerInputComponent->BindAction<FActionDelegate>("nDisplayButton2", IE_Pressed , this, &AVirtualRealityPawn::OnAction, true , 2); + PlayerInputComponent->BindAction<FActionDelegate>("nDisplayButton3", IE_Pressed , this, &AVirtualRealityPawn::OnAction, true , 3); + PlayerInputComponent->BindAction<FActionDelegate>("nDisplayButton4", IE_Pressed , this, &AVirtualRealityPawn::OnAction, true , 4); + PlayerInputComponent->BindAction<FActionDelegate>("nDisplayButton5", IE_Pressed , this, &AVirtualRealityPawn::OnAction, true , 5); + + PlayerInputComponent->BindAction<FFireDelegate> ("nDisplayButton0", IE_Released, this, &AVirtualRealityPawn::OnFire , false ); + PlayerInputComponent->BindAction<FActionDelegate>("nDisplayButton1", IE_Released, this, &AVirtualRealityPawn::OnAction, false, 1); + PlayerInputComponent->BindAction<FActionDelegate>("nDisplayButton2", IE_Released, this, &AVirtualRealityPawn::OnAction, false, 2); + PlayerInputComponent->BindAction<FActionDelegate>("nDisplayButton3", IE_Released, this, &AVirtualRealityPawn::OnAction, false, 3); + PlayerInputComponent->BindAction<FActionDelegate>("nDisplayButton4", IE_Released, this, &AVirtualRealityPawn::OnAction, false, 4); + PlayerInputComponent->BindAction<FActionDelegate>("nDisplayButton5", IE_Released, this, &AVirtualRealityPawn::OnAction, false, 5); } } UPawnMovementComponent* AVirtualRealityPawn::GetMovementComponent () const diff --git a/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h b/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h index fe7002d28c35d3e45efafccdd895c925d4a6b4b0..2fab742d475e04bf4ccae1e5e1626f5033f44902 100644 --- a/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h +++ b/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h @@ -33,6 +33,9 @@ public: UFUNCTION(BlueprintCallable, Category = "Pawn") bool IsRoomMountedMode (); UFUNCTION(BlueprintCallable, Category = "Pawn") bool IsHeadMountedMode (); + UFUNCTION(BlueprintCallable, Category = "Pawn") FString GetNodeName (); + UFUNCTION(BlueprintCallable, Category = "Pawn") float GetEyeDistance (); + UFUNCTION(BlueprintCallable, Category = "Pawn") float GetBaseTurnRate () const; UFUNCTION(BlueprintCallable, Category = "Pawn") UFloatingPawnMovement* GetFloatingPawnMovement (); UFUNCTION(BlueprintCallable, Category = "Pawn") URotatingMovementComponent* GetRotatingMovementComponent ();