From 7457b1d4d3291904d73ce9dd443ab8e0b59138a0 Mon Sep 17 00:00:00 2001 From: Lab1 <account@vr.rwth-aachen.de> Date: Fri, 3 Mar 2023 21:28:50 +0100 Subject: [PATCH] Merge branch 'fix/maxClickDistance' into 4.27 (cherry picked from commit 39c6c218ce94f2baca2366b0de561ee9db4d7f49) --- .../Private/Pawn/BasicVRInteractionComponent.cpp | 6 ++---- .../RWTHVRToolkit/Public/Pawn/BasicVRInteractionComponent.h | 6 +++--- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Source/RWTHVRToolkit/Private/Pawn/BasicVRInteractionComponent.cpp b/Source/RWTHVRToolkit/Private/Pawn/BasicVRInteractionComponent.cpp index 1ab44108..6fa1b158 100644 --- a/Source/RWTHVRToolkit/Private/Pawn/BasicVRInteractionComponent.cpp +++ b/Source/RWTHVRToolkit/Private/Pawn/BasicVRInteractionComponent.cpp @@ -43,6 +43,7 @@ void UBasicVRInteractionComponent::BeginPlay() //WidgetInteractionComponent InteractionDistance = MaxClickDistance; + InteractionRay->SetRelativeScale3D(FVector(MaxClickDistance / 100.0f, 0.5f, 0.5f)); //the ray model has a length of 100cm (and is a bit too big in Y/Z dir) SetInteractionRayVisibility(InteractionRayVisibility); } @@ -196,16 +197,13 @@ void UBasicVRInteractionComponent::TickComponent(float DeltaTime, ELevelTick Tic LastActorHit = HitActor; // Store the actor that was hit to have access to it in the next frame as well } -void UBasicVRInteractionComponent::Initialize(USceneComponent* RayEmitter, float InMaxGrabDistance, float InMaxClickDistance) +void UBasicVRInteractionComponent::Initialize(USceneComponent* RayEmitter) { if(InteractionRayEmitter) return; /* Return if already initialized */ InteractionRayEmitter = RayEmitter; - MaxGrabDistance = InMaxGrabDistance; - MaxClickDistance = InMaxClickDistance; InteractionRay->AttachToComponent(RayEmitter, FAttachmentTransformRules::KeepRelativeTransform); - InteractionRay->SetRelativeScale3D(FVector(MaxClickDistance/100.0f, 1.0f, 1.0f)); //the ray model has a length of 100cm this->AttachToComponent(RayEmitter, FAttachmentTransformRules::KeepRelativeTransform); } diff --git a/Source/RWTHVRToolkit/Public/Pawn/BasicVRInteractionComponent.h b/Source/RWTHVRToolkit/Public/Pawn/BasicVRInteractionComponent.h index 9b100179..e62fbf21 100644 --- a/Source/RWTHVRToolkit/Public/Pawn/BasicVRInteractionComponent.h +++ b/Source/RWTHVRToolkit/Public/Pawn/BasicVRInteractionComponent.h @@ -36,13 +36,13 @@ public: // Called every frame virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; - UPROPERTY(BlueprintReadWrite) float MaxGrabDistance = 50; - UPROPERTY(BlueprintReadWrite) float MaxClickDistance = 500; + UPROPERTY(EditAnywhere,BlueprintReadWrite) float MaxGrabDistance = 50; + UPROPERTY(EditAnywhere,BlueprintReadWrite) float MaxClickDistance = 500; // Enable this if you want to interact with Targetable classes or use EInteractionRayVisibility::VisibleOnHoverOnly UPROPERTY(EditAnywhere) bool bCanRaytraceEveryTick = false; UPROPERTY(EditAnywhere) TEnumAsByte<EInteractionRayVisibility> InteractionRayVisibility = EInteractionRayVisibility::Invisible; - UFUNCTION(BlueprintCallable) void Initialize(USceneComponent* RayEmitter, float InMaxGrabDistance = 50, float InMaxClickDistance = 500); + UFUNCTION(BlueprintCallable) void Initialize(USceneComponent* RayEmitter); UFUNCTION(BlueprintCallable, BlueprintPure) AActor* GetGrabbedActor() const { return GrabbedActor;} UFUNCTION(BlueprintCallable, BlueprintPure) USceneComponent* GetInteractionRayEmitter() const { return InteractionRayEmitter; } -- GitLab