From 594f3b0fb0fadd7cad068ff2fcf395ab295f3763 Mon Sep 17 00:00:00 2001
From: "jonathan.ehret" <ehret@vr.rwth-aachen.de>
Date: Mon, 17 Jul 2023 17:08:34 +0200
Subject: [PATCH] add the possibility to hide the HUD at runtime, e.g., when yu
 want to navigate to a specific condition nd then record a video in full
 screen

---
 .../StudyFrameworkPlugin/Private/HUD/SFMasterHUD.cpp   | 10 ++++++++++
 Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp |  7 +++++++
 Source/StudyFrameworkPlugin/Public/HUD/SFMasterHUD.h   |  3 +++
 Source/StudyFrameworkPlugin/Public/SFGameInstance.h    |  4 ++++
 4 files changed, 24 insertions(+)

diff --git a/Source/StudyFrameworkPlugin/Private/HUD/SFMasterHUD.cpp b/Source/StudyFrameworkPlugin/Private/HUD/SFMasterHUD.cpp
index 9ca4d84..621efd0 100644
--- a/Source/StudyFrameworkPlugin/Private/HUD/SFMasterHUD.cpp
+++ b/Source/StudyFrameworkPlugin/Private/HUD/SFMasterHUD.cpp
@@ -273,3 +273,13 @@ void ASFMasterHUD::OnShowConditionsButtonPressed()
 const ASFHMDSpectatorHUDHelp* ASFMasterHUD::GetHUDHelper() {
 	return HMDHUDHelper;
 }
+
+void ASFMasterHUD::SetHUDVisible(bool bVisible)
+{
+	if (bVisible) {
+		HUDWidget->SetVisibility(ESlateVisibility::Visible);
+	}
+	else {
+		HUDWidget->SetVisibility(ESlateVisibility::Hidden);
+	}
+}
diff --git a/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp b/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp
index efc56df..5ecf2b0 100644
--- a/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp
+++ b/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp
@@ -719,6 +719,13 @@ USFExperimenterWindow* USFGameInstance::GetExperimenterWindow() const
 	return ExperimenterWindow;
 }
 
+void USFGameInstance::SetHUDVisible(bool bVisible)
+{
+	if (GetHUD()) {
+		GetHUD()->SetHUDVisible(bVisible);
+	}
+}
+
 USFFadeHandler* USFGameInstance::GetFadeHandler()
 {
 	return FadeHandler;
diff --git a/Source/StudyFrameworkPlugin/Public/HUD/SFMasterHUD.h b/Source/StudyFrameworkPlugin/Public/HUD/SFMasterHUD.h
index f30419c..23fdb72 100644
--- a/Source/StudyFrameworkPlugin/Public/HUD/SFMasterHUD.h
+++ b/Source/StudyFrameworkPlugin/Public/HUD/SFMasterHUD.h
@@ -63,6 +63,9 @@ public:
 
 	const ASFHMDSpectatorHUDHelp* GetHUDHelper();
 
+	//setting HUD in-/visibile at runtime
+	void SetHUDVisible(bool bVisible);
+
 protected:
 	UPROPERTY(VisibleAnywhere)
 	USFHUDWidget* HUDWidget;
diff --git a/Source/StudyFrameworkPlugin/Public/SFGameInstance.h b/Source/StudyFrameworkPlugin/Public/SFGameInstance.h
index 5a1c98c..2a3836f 100644
--- a/Source/StudyFrameworkPlugin/Public/SFGameInstance.h
+++ b/Source/StudyFrameworkPlugin/Public/SFGameInstance.h
@@ -144,6 +144,10 @@ public:
 	UFUNCTION(BlueprintCallable)
 	USFExperimenterWindow* GetExperimenterWindow() const;
 
+	//setting HUD in-/visibile at runtime
+	UFUNCTION(BlueprintCallable)
+	void SetHUDVisible(bool bVisible);
+
 	//this is used by the SFMasterHUD to store content between levels
 	FHUDSavedData HUDSavedData;
 
-- 
GitLab