diff --git a/Source/DisplayClusterExtensions/Private/Pawn/VRPawnMovement.cpp b/Source/DisplayClusterExtensions/Private/Pawn/VRPawnMovement.cpp index 5cceb96c00fde4c6491cda9c33ac28390e871501..182c2b5ed2fc40f2687bd3cbcfb7459ef26d4862 100644 --- a/Source/DisplayClusterExtensions/Private/Pawn/VRPawnMovement.cpp +++ b/Source/DisplayClusterExtensions/Private/Pawn/VRPawnMovement.cpp @@ -42,7 +42,7 @@ void UVRPawnMovement::TickComponent(float DeltaTime, enum ELevelTick TickType, F Super::TickComponent(DeltaTime, TickType, ThisTickFunction); - LastCameraPosition = CameraComponent->GetComponentLocation(); + LastHeadPosition = HeadComponent->GetComponentLocation(); } bool UVRPawnMovement::CheckForVirtualMovCollision(FVector PositionChange, float DeltaTime) @@ -57,15 +57,15 @@ bool UVRPawnMovement::CheckForVirtualMovCollision(FVector PositionChange, float return false; } -void UVRPawnMovement::SetCameraComponent(UCameraComponent* NewCameraComponent) +void UVRPawnMovement::SetHeadComponent(USceneComponent* NewHeadComponent) { - CameraComponent = NewCameraComponent; - CapsuleColliderComponent->SetupAttachment(CameraComponent); + HeadComponent = NewHeadComponent; + CapsuleColliderComponent->SetupAttachment(HeadComponent); } void UVRPawnMovement::SetCapsuleColliderToUserSize() { - float CharachterSize = abs(UpdatedComponent->GetComponentLocation().Z - CameraComponent->GetComponentLocation().Z); + float CharachterSize = abs(UpdatedComponent->GetComponentLocation().Z - HeadComponent->GetComponentLocation().Z); if (CharachterSize > MaxStepHeight) { @@ -81,21 +81,21 @@ void UVRPawnMovement::SetCapsuleColliderToUserSize() CapsuleColliderComponent->SetCapsuleSize(ColliderRadius, ColliderHalfHeight); } - CapsuleColliderComponent->SetWorldLocation(CameraComponent->GetComponentLocation()); + CapsuleColliderComponent->SetWorldLocation(HeadComponent->GetComponentLocation()); CapsuleColliderComponent->AddWorldOffset(FVector(0, 0, -ColliderHalfHeight)); CapsuleColliderComponent->SetWorldRotation(FRotator(0, 0, 1)); } else { - CapsuleColliderComponent->SetWorldLocation(CameraComponent->GetComponentLocation()); + CapsuleColliderComponent->SetWorldLocation(HeadComponent->GetComponentLocation()); CapsuleColliderComponent->SetWorldRotation(FRotator(0, 0, 1)); } } void UVRPawnMovement::CheckForPhysWalkingCollision() { - FVector CurrentCameraPosition = CameraComponent->GetComponentLocation(); - FVector Direction = CurrentCameraPosition - LastCameraPosition; + FVector CurrentHeadPosition = HeadComponent->GetComponentLocation(); + FVector Direction = CurrentHeadPosition - LastHeadPosition; FHitResult FHitResultPhys; CapsuleColliderComponent->AddWorldOffset(Direction, true, &FHitResultPhys); diff --git a/Source/DisplayClusterExtensions/Private/Pawn/VirtualRealityPawn.cpp b/Source/DisplayClusterExtensions/Private/Pawn/VirtualRealityPawn.cpp index 3a078bd5f53b27d5bc3fee2ad39603edbe821219..de5947b1189bb24008208536e196c61c7e2d1914 100644 --- a/Source/DisplayClusterExtensions/Private/Pawn/VirtualRealityPawn.cpp +++ b/Source/DisplayClusterExtensions/Private/Pawn/VirtualRealityPawn.cpp @@ -26,14 +26,14 @@ AVirtualRealityPawn::AVirtualRealityPawn(const FObjectInitializer& ObjectInitial CameraComponent = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera")); CameraComponent->SetupAttachment(RootComponent); CameraComponent->SetAbsolute(); - - PawnMovement = CreateDefaultSubobject<UVRPawnMovement>(TEXT("Pawn Movement")); - PawnMovement->SetUpdatedComponent(RootComponent); - PawnMovement->SetCameraComponent(CameraComponent); Head = CreateDefaultSubobject<UUniversalTrackedComponent>(TEXT("Head")); Head->ProxyType = ETrackedComponentType::TCT_HEAD; Head->SetupAttachment(RootComponent); + + PawnMovement = CreateDefaultSubobject<UVRPawnMovement>(TEXT("Pawn Movement")); + PawnMovement->SetUpdatedComponent(RootComponent); + PawnMovement->SetHeadComponent(Head); RightHand = CreateDefaultSubobject<UUniversalTrackedComponent>(TEXT("Right Hand")); RightHand->ProxyType = ETrackedComponentType::TCT_RIGHT_HAND; diff --git a/Source/DisplayClusterExtensions/Public/Pawn/VRPawnMovement.h b/Source/DisplayClusterExtensions/Public/Pawn/VRPawnMovement.h index 0eeee2e3b94195514731d446d5cb499cc790b6cf..31bb8611508c484f62f346789ab9a5c4c654af34 100644 --- a/Source/DisplayClusterExtensions/Public/Pawn/VRPawnMovement.h +++ b/Source/DisplayClusterExtensions/Public/Pawn/VRPawnMovement.h @@ -38,7 +38,7 @@ public: virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - void SetCameraComponent(UCameraComponent* NewCameraComponent); + void SetHeadComponent(USceneComponent* NewHeadComponent); UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VR Movement") EVRNavigationModes NavigationMode = EVRNavigationModes::NAV_WALK; @@ -63,8 +63,8 @@ private: //(direction = Down = -1), (direction = Up = 1) UPROPERTY() UCapsuleComponent* CapsuleColliderComponent = nullptr; - UPROPERTY() UCameraComponent* CameraComponent = nullptr; + UPROPERTY() USceneComponent* HeadComponent = nullptr; float VerticalSpeed = 0.0f; - FVector LastCameraPosition; + FVector LastHeadPosition; };