From 7eab44fc105edda500f20e2695672fa834b581dc Mon Sep 17 00:00:00 2001 From: Ehret <jw210150@WIN.RZ.RWTH-AACHEN.DE> Date: Mon, 26 Sep 2022 23:33:21 +0200 Subject: [PATCH 1/3] move where sanity checks and warnings for logging data is done. This avoids logging data for upcoming conditions, when attemoting to log data multiple times --- .../Private/Logging/SFLoggingBPLibrary.cpp | 3 --- .../Private/SFCondition.cpp | 21 +++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Source/StudyFrameworkPlugin/Private/Logging/SFLoggingBPLibrary.cpp b/Source/StudyFrameworkPlugin/Private/Logging/SFLoggingBPLibrary.cpp index 949ceb7..1a80f5e 100644 --- a/Source/StudyFrameworkPlugin/Private/Logging/SFLoggingBPLibrary.cpp +++ b/Source/StudyFrameworkPlugin/Private/Logging/SFLoggingBPLibrary.cpp @@ -13,9 +13,6 @@ USFCondition* CurrCondition = USFGameInstance::Get()->GetParticipant()->GetCurrentCondition(); if (!CurrCondition->StoreDependentVariableData(DependentVariableName, Value)) { - FSFLoggingUtils::Log( - "Cannot log data '" + Value + "' for dependent variable '" + DependentVariableName + - "' since it does not exist for this condition!", true); return; } LogComment("Recorded " + DependentVariableName + ": " + Value); diff --git a/Source/StudyFrameworkPlugin/Private/SFCondition.cpp b/Source/StudyFrameworkPlugin/Private/SFCondition.cpp index 1b7dfca..6ac893d 100644 --- a/Source/StudyFrameworkPlugin/Private/SFCondition.cpp +++ b/Source/StudyFrameworkPlugin/Private/SFCondition.cpp @@ -3,6 +3,7 @@ #include "UObject/UObjectGlobals.h" #include "SFMapFactor.h" +#include "Logging/SFLoggingUtils.h" USFCondition::USFCondition() { @@ -104,6 +105,22 @@ bool USFCondition::operator==(USFCondition& Other) bool USFCondition::StoreDependentVariableData(const FString& VarName, const FString& Value) { + if(!WasStarted()) + { + FSFLoggingUtils::Log( + "Cannot log data '" + Value + "' for dependent variable '" + VarName + + "' since condition was not started yet, probably still fading!", true); + return false; + } + + if (IsFinished()) + { + FSFLoggingUtils::Log( + "Cannot log data '" + Value + "' for dependent variable '" + VarName + + "' since condition was has finished, probably already fading!", true); + return false; + } + for (auto& Var : DependentVariablesValues) { if (Var.Key->Name == VarName) @@ -112,6 +129,10 @@ bool USFCondition::StoreDependentVariableData(const FString& VarName, const FStr return true; } } + + FSFLoggingUtils::Log( + "Cannot log data '" + Value + "' for dependent variable '" + VarName + + "' since it does not exist for this condition!", true); return false; } -- GitLab From f25b379ce3e18cfc9463398dec14f96d6f139788 Mon Sep 17 00:00:00 2001 From: Ehret <jw210150@WIN.RZ.RWTH-AACHEN.DE> Date: Mon, 26 Sep 2022 23:51:25 +0200 Subject: [PATCH 2/3] only "EndStudy" once so no double entries are written into the long table! --- Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp b/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp index 789b775..2f84cab 100644 --- a/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp +++ b/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp @@ -310,9 +310,10 @@ bool USFGameInstance::StartStudy() void USFGameInstance::EndStudy() { USFCondition* LastCondition = Participant->GetCurrentCondition(); - if (LastCondition && LastCondition->WasStarted()) - LastCondition->End(); - + if (!LastCondition || !LastCondition->WasStarted() || LastCondition->IsFinished()) + return; + + LastCondition->End(); Participant->EndStudy(); UpdateHUD("Study ended"); -- GitLab From c402370ebc88baa699054e3ad957a1da08df9a58 Mon Sep 17 00:00:00 2001 From: Ehret <jw210150@WIN.RZ.RWTH-AACHEN.DE> Date: Mon, 26 Sep 2022 23:53:15 +0200 Subject: [PATCH 3/3] improve logging --- Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp | 8 ++++++++ Source/StudyFrameworkPlugin/Private/SFParticipant.cpp | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp b/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp index 2f84cab..5441626 100644 --- a/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp +++ b/Source/StudyFrameworkPlugin/Private/SFGameInstance.cpp @@ -328,9 +328,17 @@ void USFGameInstance::EndStudy() bool USFGameInstance::NextCondition(bool bForced /*=false*/) { + // Check if is already fading + if (FadeHandler->GetIsFading()) + { + FSFLoggingUtils::Log("[USFGameInstance::NextCondition()]: Already Fading between levels", true); + return false; + } + USFCondition* NextCondition = Participant->GetNextCondition(); if (!NextCondition) { + FSFLoggingUtils::Log("[SFGameInstance::NextCondition]: All conditions already ran, no NextCondition", false); EndStudy(); return false; } diff --git a/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp b/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp index 8d619ff..5f60800 100644 --- a/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp +++ b/Source/StudyFrameworkPlugin/Private/SFParticipant.cpp @@ -169,7 +169,6 @@ USFCondition* USFParticipant::GetNextCondition() const // Get next Condition if (CurrentConditionIdx + 1 >= Conditions.Num()) { - FSFLoggingUtils::Log("[USFParticipant::NextCondition()]: All conditions already ran, no NextCondition", false); return nullptr; } USFCondition* UpcomingCondition = Conditions[CurrentConditionIdx + 1]; -- GitLab