diff --git a/Source/Flow/Private/FlowComponent.cpp b/Source/Flow/Private/FlowComponent.cpp index fc1dc359..18955eed 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 04833927..9deb6c9f 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 85420b9b..09f4ef4b 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 9dbe4d63..f85ff5e0 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 30161518..09935984 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)