From 7baa505425a2e5fa9387c2b97c53c60d65f0068c Mon Sep 17 00:00:00 2001
From: David Gilbert <gilbert@vr.rwth-aachen.de>
Date: Thu, 25 Apr 2024 13:12:33 +0200
Subject: [PATCH] Hotfix: Adds workaround for IntenSelect crashing multiplayer.

---
 .../Private/Pawn/IntenSelectComponent.cpp     | 24 ++++++-------------
 1 file changed, 7 insertions(+), 17 deletions(-)

diff --git a/Source/RWTHVRToolkit/Private/Pawn/IntenSelectComponent.cpp b/Source/RWTHVRToolkit/Private/Pawn/IntenSelectComponent.cpp
index 644f30c9..385e2b2e 100644
--- a/Source/RWTHVRToolkit/Private/Pawn/IntenSelectComponent.cpp
+++ b/Source/RWTHVRToolkit/Private/Pawn/IntenSelectComponent.cpp
@@ -85,31 +85,21 @@ void UIntenSelectComponent::BeginPlay()
 
 void UIntenSelectComponent::InitInputBindings()
 {
-	const APlayerController* PC = UGameplayStatics::GetPlayerController(GetWorld(), 0);
-
-	UEnhancedInputLocalPlayerSubsystem* Subsystem =
-		ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(PC->GetLocalPlayer());
-
-	UInputComponent* PlayerInputComponent = PC->InputComponent;
-	UEnhancedInputComponent* PEI = Cast<UEnhancedInputComponent>(PlayerInputComponent);
+	const APawn* Pawn = Cast<APawn>(GetOwner());
+	if (!Pawn)
+		return;
+	UEnhancedInputComponent* EI = Cast<UEnhancedInputComponent>(Pawn->InputComponent);
 
-	if (!PEI)
+	if (!EI)
 	{
 		const FString Message = "Could not get PlayerInputComponent for IntenSelect Input Assignment!";
-
-#if WITH_EDITOR
-		const FText Title = FText::FromString(FString("ERROR"));
-		FMessageDialog::Open(EAppMsgType::Ok, FText::FromString(Message), Title);
-#endif
-
 		UE_LOG(LogTemp, Error, TEXT("%s"), *Message)
-		UKismetSystemLibrary::QuitGame(this, nullptr, EQuitPreference::Quit, false);
 		return;
 	}
 
 	// Bind the actions
-	PEI->BindAction(InputClick, ETriggerEvent::Started, this, &UIntenSelectComponent::OnFireDown);
-	PEI->BindAction(InputClick, ETriggerEvent::Completed, this, &UIntenSelectComponent::OnFireUp);
+	EI->BindAction(InputClick, ETriggerEvent::Started, this, &UIntenSelectComponent::OnFireDown);
+	EI->BindAction(InputClick, ETriggerEvent::Completed, this, &UIntenSelectComponent::OnFireUp);
 }
 
 void UIntenSelectComponent::InitSplineComponent()
-- 
GitLab