From 6e6cec4223b81abc6c30b5094c7f715ecb605a5c Mon Sep 17 00:00:00 2001 From: "jonathan.ehret" <ehret@vr.rwth-aachen.de> Date: Wed, 12 Jul 2023 12:43:58 +0200 Subject: [PATCH] fix crash when having more than 6 factors due to limited number of text blocks in HUD --- Source/StudyFrameworkPlugin/Private/HUD/SFHUDWidget.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/StudyFrameworkPlugin/Private/HUD/SFHUDWidget.cpp b/Source/StudyFrameworkPlugin/Private/HUD/SFHUDWidget.cpp index 4615653..703778d 100644 --- a/Source/StudyFrameworkPlugin/Private/HUD/SFHUDWidget.cpp +++ b/Source/StudyFrameworkPlugin/Private/HUD/SFHUDWidget.cpp @@ -4,6 +4,7 @@ #include "HUD/SFHUDWidget.h" #include "Help/SFUtils.h" +#include "Logging/SFLoggingUtils.h" USFHUDWidget::USFHUDWidget(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) @@ -27,12 +28,18 @@ void USFHUDWidget::SetPhase(const FString& Text) void USFHUDWidget::SetCondition(const TMap<FString, FString>& Texts) { + //TODO: as of now we have a fixed number of text blocks, maybe this can be made dynamic TArray<UTextBlock*> TextBlocks = { ConditionText1, ConditionText2, ConditionText3, ConditionText4, ConditionText5, ConditionText6 }; int TextIndex=0; for(auto FactorLevel : Texts) { + if(TextIndex>=TextBlocks.Num()) + { + FSFLoggingUtils::Log("Not all factor levels fit in the HUD, so only showing the first 6 levels"); + break; + } TextBlocks[TextIndex++]->SetText(FText::FromString(FactorLevel.Key + ": "+FactorLevel.Value)); } while(TextIndex<TextBlocks.Num()) -- GitLab