diff --git a/Source/DisplayClusterExtensions/Private/Pawn/VRPawnMovement.cpp b/Source/DisplayClusterExtensions/Private/Pawn/VRPawnMovement.cpp index 182c2b5ed2fc40f2687bd3cbcfb7459ef26d4862..b11f6bd87526002e7165bd85e4c4e353897d271d 100644 --- a/Source/DisplayClusterExtensions/Private/Pawn/VRPawnMovement.cpp +++ b/Source/DisplayClusterExtensions/Private/Pawn/VRPawnMovement.cpp @@ -8,7 +8,7 @@ UVRPawnMovement::UVRPawnMovement(const FObjectInitializer& ObjectInitializer) : CapsuleColliderComponent->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); CapsuleColliderComponent->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore); CapsuleColliderComponent->SetCollisionResponseToChannel(ECollisionChannel::ECC_WorldStatic, ECollisionResponse::ECR_Block); - CapsuleColliderComponent->SetCapsuleSize(40.0f, 96.0f); + CapsuleColliderComponent->SetCapsuleSize(CapsuleRadius, 80.0f); } void UVRPawnMovement::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction){ @@ -61,6 +61,9 @@ void UVRPawnMovement::SetHeadComponent(USceneComponent* NewHeadComponent) { HeadComponent = NewHeadComponent; CapsuleColliderComponent->SetupAttachment(HeadComponent); + const float HalfHeight = 80.0f; //this is just an initial value to look good in editor + CapsuleColliderComponent->SetCapsuleSize(CapsuleRadius, HalfHeight); + CapsuleColliderComponent->SetWorldLocation(FVector(0.0f, 0.0f,HalfHeight)); } void UVRPawnMovement::SetCapsuleColliderToUserSize() @@ -71,14 +74,13 @@ void UVRPawnMovement::SetCapsuleColliderToUserSize() { float ColliderHeight = CharachterSize - MaxStepHeight; float ColliderHalfHeight = ColliderHeight / 2.0f; - float ColliderRadius = 40.0f; - if (ColliderHalfHeight <= ColliderRadius) + if (ColliderHalfHeight <= CapsuleRadius) {//Make the collider to a Sphere CapsuleColliderComponent->SetCapsuleSize(ColliderHalfHeight, ColliderHalfHeight); } else {//Make the collider to a Capsule - CapsuleColliderComponent->SetCapsuleSize(ColliderRadius, ColliderHalfHeight); + CapsuleColliderComponent->SetCapsuleSize(CapsuleRadius, ColliderHalfHeight); } CapsuleColliderComponent->SetWorldLocation(HeadComponent->GetComponentLocation()); diff --git a/Source/DisplayClusterExtensions/Private/Pawn/VirtualRealityPawn.cpp b/Source/DisplayClusterExtensions/Private/Pawn/VirtualRealityPawn.cpp index 86d9849214caf64fae7bd30f226adb1d2a4b3357..49b74b7e8e83413cc86bbc007986d87d7494f9f7 100644 --- a/Source/DisplayClusterExtensions/Private/Pawn/VirtualRealityPawn.cpp +++ b/Source/DisplayClusterExtensions/Private/Pawn/VirtualRealityPawn.cpp @@ -25,6 +25,7 @@ AVirtualRealityPawn::AVirtualRealityPawn(const FObjectInitializer& ObjectInitial CameraComponent = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera")); CameraComponent->SetupAttachment(RootComponent); + CameraComponent->SetRelativeLocation(FVector(0.0f, 0.0f, BaseEyeHeight)); //so it is rendered correctly in editor Head = CreateDefaultSubobject<UUniversalTrackedComponent>(TEXT("Head")); Head->ProxyType = ETrackedComponentType::TCT_HEAD; diff --git a/Source/DisplayClusterExtensions/Public/Pawn/VRPawnMovement.h b/Source/DisplayClusterExtensions/Public/Pawn/VRPawnMovement.h index 31bb8611508c484f62f346789ab9a5c4c654af34..d90c30c7ab47a8847590bb7894f8447f6642a58e 100644 --- a/Source/DisplayClusterExtensions/Public/Pawn/VRPawnMovement.h +++ b/Source/DisplayClusterExtensions/Public/Pawn/VRPawnMovement.h @@ -52,6 +52,9 @@ public: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VR Movement") float UpSteppingAcceleration = 500.0f; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "VR Movement") + float CapsuleRadius = 40.0f; + private: FHitResult CreateLineTrace(FVector Direction, const FVector Start, bool Visibility); FHitResult CreateMultiLineTrace(FVector Direction, const FVector Start, float Radius, bool Visibility);