From 35cdbfa83ef37f667f886a6188ab81171131dbf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gregor=20S=C3=B6nnichsen?= Date: Thu, 25 Dec 2025 22:19:10 +0100 Subject: [PATCH] Added option to tone down on-screen error messages --- Source/Flow/Private/FlowComponent.cpp | 2 +- Source/Flow/Private/Nodes/FlowNode.cpp | 3 ++- Source/Flow/Private/Nodes/FlowNodeBase.cpp | 2 +- Source/Flow/Public/FlowSettings.h | 6 ++++++ Source/Flow/Public/FlowTypes.h | 3 ++- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Source/Flow/Private/FlowComponent.cpp b/Source/Flow/Private/FlowComponent.cpp index fc1dc359e..18955eedb 100644 --- a/Source/Flow/Private/FlowComponent.cpp +++ b/Source/Flow/Private/FlowComponent.cpp @@ -302,7 +302,7 @@ void UFlowComponent::LogError(FString Message, const EFlowOnScreenMessageType On } } } - else + else if (OnScreenMessageType == EFlowOnScreenMessageType::Temporary) { GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Red, Message); } diff --git a/Source/Flow/Private/Nodes/FlowNode.cpp b/Source/Flow/Private/Nodes/FlowNode.cpp index 048339277..9deb6c9f7 100644 --- a/Source/Flow/Private/Nodes/FlowNode.cpp +++ b/Source/Flow/Private/Nodes/FlowNode.cpp @@ -856,7 +856,8 @@ void UFlowNode::TriggerOutput(const FName PinName, const bool bFinish /*= false* if (HasFinished()) { // do not trigger output if node is already finished or aborted - LogError(TEXT("Trying to TriggerOutput after finished or aborted")); + LogError(TEXT("Trying to TriggerOutput after finished or aborted"), + GetDefault()->FinishedNodeTriggerErrorLogScreenPersistency); return; } diff --git a/Source/Flow/Private/Nodes/FlowNodeBase.cpp b/Source/Flow/Private/Nodes/FlowNodeBase.cpp index 85420b9ba..09f4ef4b0 100644 --- a/Source/Flow/Private/Nodes/FlowNodeBase.cpp +++ b/Source/Flow/Private/Nodes/FlowNodeBase.cpp @@ -870,7 +870,7 @@ void UFlowNodeBase::LogError(FString Message, const EFlowOnScreenMessageType OnS } } } - else + else if (OnScreenMessageType == EFlowOnScreenMessageType::Temporary) { GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Red, Message); } diff --git a/Source/Flow/Public/FlowSettings.h b/Source/Flow/Public/FlowSettings.h index 9dbe4d63a..f85ff5e06 100644 --- a/Source/Flow/Public/FlowSettings.h +++ b/Source/Flow/Public/FlowSettings.h @@ -2,6 +2,7 @@ #pragma once +#include "FlowTypes.h" #include "Engine/DeveloperSettings.h" #include "Templates/SubclassOf.h" #include "UObject/SoftObjectPath.h" @@ -43,6 +44,11 @@ class FLOW_API UFlowSettings : public UDeveloperSettings // by incorporating data that would otherwise go in the Description UPROPERTY(EditAnywhere, config, Category = "Nodes") bool bUseAdaptiveNodeTitles; + + // On screen message type for runtime errors when a flow node + // is attempted to be triggered after being finished or aborted. + UPROPERTY(EditAnywhere, config, Category = "Nodes") + EFlowOnScreenMessageType FinishedNodeTriggerErrorLogScreenPersistency = EFlowOnScreenMessageType::Permanent; #if WITH_EDITOR DECLARE_DELEGATE(FFlowSettingsEvent); diff --git a/Source/Flow/Public/FlowTypes.h b/Source/Flow/Public/FlowTypes.h index 301615181..099359843 100644 --- a/Source/Flow/Public/FlowTypes.h +++ b/Source/Flow/Public/FlowTypes.h @@ -111,7 +111,8 @@ UENUM(BlueprintType) enum class EFlowOnScreenMessageType : uint8 { Temporary, - Permanent + Permanent, + Disabled }; UENUM(BlueprintType)