diff --git a/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp b/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp
index 4246a59b10481c80a795b8362024bc3d6fe3901c..3bdf59ed703923fddee28cb068bb3b511575632e 100644
--- a/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp
+++ b/Source/DisplayClusterExtensions/Private/VirtualRealityPawn.cpp
@@ -27,9 +27,9 @@ AVirtualRealityPawn::AVirtualRealityPawn(const FObjectInitializer& ObjectInitial
AutoPossessPlayer = EAutoReceiveInput::Player0; // Necessary for receiving motion controller events.
- Movement = CreateDefaultSubobject<UWalkingPawnMovement>(TEXT("WalkingMovement"));
- Movement->SetUpdatedComponent(RootComponent);
- Movement->SetCameraComponent(CameraComponent);
+ WalkingMovement = CreateDefaultSubobject<UWalkingPawnMovement>(TEXT("WalkingMovement"));
+ WalkingMovement->SetUpdatedComponent(RootComponent);
+ WalkingMovement->SetCameraComponent(CameraComponent);
RotatingMovement = CreateDefaultSubobject<URotatingMovementComponent>(TEXT("RotatingMovement"));
RotatingMovement->UpdatedComponent = RootComponent;
@@ -210,10 +210,10 @@ void AVirtualRealityPawn::BeginPlay()
if (SettingsActors.Num() > 0)
{
ADisplayClusterSettings* Settings = Cast<ADisplayClusterSettings>(SettingsActors[0]);
- Movement->MaxSpeed = Settings->MovementMaxSpeed;
- Movement->Acceleration = Settings->MovementAcceleration;
- Movement->Deceleration = Settings->MovementDeceleration;
- Movement->TurningBoost = Settings->MovementTurningBoost;
+ WalkingMovement->MaxSpeed = Settings->MovementMaxSpeed;
+ WalkingMovement->Acceleration = Settings->MovementAcceleration;
+ WalkingMovement->Deceleration = Settings->MovementDeceleration;
+ WalkingMovement->TurningBoost = Settings->MovementTurningBoost;
BaseTurnRate = Settings->RotationSpeed;
}
@@ -277,6 +277,9 @@ void AVirtualRealityPawn::BeginPlay()
CollisionComponent->SetCollisionProfileName(FName("NoCollision"));
CollisionComponent->SetCollisionEnabled(ECollisionEnabled::NoCollision);
+
+ //if the navigation mode was changed in the editor, it should be updated in the actual movement component
+ SetNavigationMode(NavigationMode);
}
void AVirtualRealityPawn::EndPlay(const EEndPlayReason::Type EndPlayReason)
@@ -417,7 +420,7 @@ FTwoVectors AVirtualRealityPawn::GetHandRay(float Length)
UPawnMovementComponent* AVirtualRealityPawn::GetMovementComponent() const
{
- return Movement;
+ return WalkingMovement;
}
void AVirtualRealityPawn::InitRoomMountedComponentReferences()
@@ -457,5 +460,6 @@ void AVirtualRealityPawn::InitRoomMountedComponentReferences()
void AVirtualRealityPawn::SetNavigationMode(EVRNavigationModes Mode)
{
- Movement->NavigationMode = Mode;
+ NavigationMode = Mode;
+ WalkingMovement->NavigationMode = Mode;
}
diff --git a/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h b/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h
index 94d1e8dc7147299b18c85e74db185d005451668d..2cf7a590291102c2f5fa14cf2ff417cbf9bae4e7 100644
--- a/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h
+++ b/Source/DisplayClusterExtensions/Public/VirtualRealityPawn.h
@@ -56,6 +56,8 @@ public:
UFUNCTION(Category = "Pawn") USceneComponent* GetTrackingOriginComponent();
UFUNCTION(Category = "Pawn") void SetNavigationMode(EVRNavigationModes Mode);
+ //we also add this property so the navigation mode can be changed easier in the editor, will get forwarded to the movment comp on BeginPlay
+ UPROPERTY(Category = "Pawn", EditAnywhere, BlueprintReadOnly) EVRNavigationModes NavigationMode = EVRNavigationModes::nav_mode_fly;
private:
UFUNCTION(Category = "Pawn") USceneComponent* GetCaveCenterComponent();
@@ -78,7 +80,7 @@ protected:
virtual UPawnMovementComponent* GetMovementComponent() const override;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pawn", meta = (AllowPrivateAccess = "true")) float BaseTurnRate = 45.0f;
- UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Pawn", meta = (AllowPrivateAccess = "true")) UWalkingPawnMovement* Movement = nullptr;
+ UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Pawn", meta = (AllowPrivateAccess = "true")) UWalkingPawnMovement* WalkingMovement = nullptr;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Pawn", meta = (AllowPrivateAccess = "true")) URotatingMovementComponent* RotatingMovement = nullptr;
// Use only when handling cross-device (PC, HMD, CAVE/ROLV) compatibility manually. CAVE/ROLV flystick.