From 5667930f6eaa501f828d302248f29b9696bda784 Mon Sep 17 00:00:00 2001 From: Myroshnychenko Oleh <67393547+Locomody@users.noreply.github.com> Date: Wed, 2 Sep 2026 13:26:28 +0200 Subject: [PATCH] Fix: UFlowNodeAddOn never overrides GetParentNode() Fix UFlowNodeAddOn missing GetParentNode() override UFlowNodeBase::GetParentNode() is declared PURE_VIRTUAL. Under CHECK_PUREVIRTUALS=0 that macro expands to a body that only fatal-errors if actually called, so a subclass that never overrides it still compiles. Under CHECK_PUREVIRTUALS=1 it expands to =0, a genuine pure virtual, and any concrete class that leaves it unoverridden fails to compile as abstract. UFlowNode overrides GetParentNode(). UFlowNodeAddOn overrides every other pure virtual it inherits from UFlowNodeBase but missed this one, so every concrete UFlowNodeAddOn subclass is abstract under CHECK_PUREVIRTUALS=1, including the built-in predicate addons (AND, OR, NOT, RequireGameplayTags, CompareValues) and any project-defined addon. Add the same override UFlowNode already has, reusing GetFlowNodeSelfOrOwner() which UFlowNodeAddOn already resolves correctly to the owning top-level node. --- Source/Flow/Public/AddOns/FlowNodeAddOn.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Source/Flow/Public/AddOns/FlowNodeAddOn.h b/Source/Flow/Public/AddOns/FlowNodeAddOn.h index c1971fa8b..d91d5da88 100644 --- a/Source/Flow/Public/AddOns/FlowNodeAddOn.h +++ b/Source/Flow/Public/AddOns/FlowNodeAddOn.h @@ -52,6 +52,8 @@ class UFlowNodeAddOn : public UFlowNodeBase FLOW_API virtual UFlowNode* GetFlowNodeSelfOrOwner() override { return FlowNode; } FLOW_API virtual bool IsSupportedInputPinName(const FName& PinName) const override; + FLOW_API virtual const UFlowNode* GetParentNode() const override { return UFlowNodeBase::GetFlowNodeSelfOrOwner(); } + FLOW_API virtual void TriggerFirstOutput(const bool bFinish) override; FLOW_API virtual void TriggerOutput(const FName PinName, const bool bFinish = false, const EFlowPinActivationType ActivationType = EFlowPinActivationType::Default) override; FLOW_API virtual void Finish() override;