UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DataflowSubGraphNodes.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
10
11#include "DataflowSubGraphNodes.generated.h"
12
13struct FDataflowOutput;
15class UDataflow;
17
18namespace UE::Dataflow
19{
20 enum class ESubGraphChangedReason: uint8;
21
26}
27
28
29
33USTRUCT(meta=(Icon="GraphEditor.Function_16x"))
36#if CPP
38#endif
39{
41
42 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowSubGraphInputNode, "SubGraphInput", "SubGraph", "")
43
44public:
46
47 /* Begin IOwnerInterface */
48 virtual FDataflowNode* GetOwner(const FDataflowDynamicConnections* Caller) override { return this; }
49 virtual const FInstancedPropertyBag& GetPropertyBag(const FDataflowDynamicConnections* Caller) override { return PropertyBag; }
50 /* End IOwnerInterface */
51
52 DATAFLOWENGINE_API void AddConnectionsTo(TArrayView<FDataflowConnection*> Connections);
53
54private:
55 virtual void Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const override;
56 virtual void PostSerialize(const FArchive& Ar) override;
57 virtual void OnPropertyChanged(UE::Dataflow::FContext& Context, const FPropertyChangedEvent& InPropertyChangedEvent) override;
58
59 virtual bool SupportsDropConnectionOnNode(FName TypeName, UE::Dataflow::FPin::EDirection Direction) const override;
60 virtual const FDataflowConnection* OnDropConnectionOnNode(const FDataflowConnection& DroppedConnection) override;
61
62 UPROPERTY()
63 FDataflowDynamicConnections DynamicConnections;
64
65 UPROPERTY(EditAnyWhere, Category = Inputs, Meta = (DisplayName = "Inputs"))
66 FInstancedPropertyBag PropertyBag;
67};
68
69
76#if CPP
78#endif
79{
81
82 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowSubGraphOutputNode, "SubGraphOutput", "SubGraph", "")
83
84public:
86
87public:
88 /* Begin IOwnerInterface */
89 virtual FDataflowNode* GetOwner(const FDataflowDynamicConnections* Caller) override { return this; }
90 virtual const FInstancedPropertyBag& GetPropertyBag(const FDataflowDynamicConnections* Caller) override { return PropertyBag; }
91 /* End IOwnerInterface */
92
93 DATAFLOWENGINE_API void AddConnectionsTo(TArrayView<FDataflowConnection*> Connections);
94
95private:
96 virtual void Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const override;
97 virtual void PostSerialize(const FArchive& Ar) override;
98 virtual void OnPropertyChanged(UE::Dataflow::FContext& Context, const FPropertyChangedEvent& InPropertyChangedEvent) override;
99
100 virtual bool SupportsDropConnectionOnNode(FName TypeName, UE::Dataflow::FPin::EDirection Direction) const override;
101 virtual const FDataflowConnection* OnDropConnectionOnNode(const FDataflowConnection& DroppedConnection) override;
102
103 // we want the user to be able to change the type of the properties in the property bag or rename them
104 virtual bool MakeConnectedPropertiesReadOnly() const override { return false; }
105
106 UPROPERTY()
107 FDataflowDynamicConnections DynamicConnections;
108
109 UPROPERTY(EditAnyWhere, Category = Inputs, Meta = (DisplayName = "Inputs"))
110 FInstancedPropertyBag PropertyBag;
111};
112
113
121{
123
125
126public:
128
129private:
130 virtual void Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const override;
131
132 UPROPERTY(Meta = (DataflowOutput))
133 int32 Index = 0;
134};
135
139USTRUCT(meta = (Icon = "GraphEditor.Function_16x"))
142#if CPP
145#endif
146{
148
149 DATAFLOW_NODE_DEFINE_INTERNAL(FDataflowCallSubGraphNode, "SubGraphCall", "SubGraph", "")
150
151public:
154
155 DATAFLOWENGINE_API void SetSubGraphGuid(const FGuid& Guid);
156 const FGuid& GetSubGraphGuid() const { return SubGraphGuid; }
157
158 DATAFLOWENGINE_API void RefreshSubGraphName();
159
160private:
161 virtual void Evaluate(UE::Dataflow::FContext& Context, const FDataflowOutput* Out) const override;
162 virtual void PostSerialize(const FArchive& Ar) override;
163
164 /* Begin ISubGraphContextCallback */
165 virtual void EvaluateParentContext(UE::Dataflow::FContext& Context, UE::Dataflow::FContext& SubGraphContext, const FDataflowOutput& SubGraphOutput) const override;
166 /* End ISubGraphContextCallback */
167
168 /* Begin IOwnerInterface */
169 virtual FDataflowNode* GetOwner(const FDataflowDynamicConnections* Caller) override { return this; }
170 virtual const FInstancedPropertyBag& GetPropertyBag(const FDataflowDynamicConnections* Caller) override;
171 /* End IOwnerInterface */
172
173
174 void UnregisterHandlers(UDataflowSubGraph* SubGraph);
175 void RegisterHandlers(UDataflowSubGraph* SubGraph);
176 void OnSubGraphChanged(const struct FEdGraphEditAction& InAction);
178 void OnSubGraphLoaded(const UDataflowSubGraph& InSubGraph);
179
180 void SyncInputsPropertyBagWithSubGraph();
181 void SyncOutputsPropertyBagWithSubGraph();
182
183 bool IsValid() const;
184
185 UPROPERTY()
186 FGuid SubGraphGuid;
187
189 FName SubGraphName;
190
191 UPROPERTY()
192 FDataflowDynamicConnections DynamicInputs;
193
194 UPROPERTY()
195 FInstancedPropertyBag InputsPropertyBag;
196
197 UPROPERTY()
198 FDataflowDynamicConnections DynamicOutputs;
199
200 UPROPERTY()
201 FInstancedPropertyBag OutputsPropertyBag;
202
203 TWeakObjectPtr<UDataflow> DataflowAssetWeakPtr;
204 FDelegateHandle OnGraphChangedHandle;
205};
206
207namespace UE::Dataflow
208{
209 void RegisterSubGraphNodes();
210}
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DATAFLOW_NODE_DEFINE_INTERNAL(TYPE, DISPLAY_NAME, CATEGORY, TAGS)
Definition DataflowNode.h:951
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition IDelegateInstance.h:14
Definition NameTypes.h:617
Definition ArrayView.h:139
Definition DataflowSubGraph.h:23
Definition DataflowObject.h:106
Definition DataflowNodeParameters.h:134
Definition DataflowAnyType.cpp:10
ESubGraphChangedReason
Definition DataflowObject.h:35
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
Definition DataflowSubGraphNodes.h:146
const FGuid & GetSubGraphGuid() const
Definition DataflowSubGraphNodes.h:156
Definition DataflowConnection.h:131
Definition DataflowDynamicConnections.h:23
Definition DataflowDynamicConnections.h:19
Definition DataflowNode.h:52
Definition DataflowInputOutput.h:149
Definition DataflowSubGraphNodes.h:121
Definition DataflowSubGraphNodes.h:39
virtual FDataflowNode * GetOwner(const FDataflowDynamicConnections *Caller) override
Definition DataflowSubGraphNodes.h:48
virtual const FInstancedPropertyBag & GetPropertyBag(const FDataflowDynamicConnections *Caller) override
Definition DataflowSubGraphNodes.h:49
Definition DataflowSubGraphNodes.h:79
virtual FDataflowNode * GetOwner(const FDataflowDynamicConnections *Caller) override
Definition DataflowSubGraphNodes.h:89
virtual const FInstancedPropertyBag & GetPropertyBag(const FDataflowDynamicConnections *Caller) override
Definition DataflowSubGraphNodes.h:90
Definition GraphEditAction.h:29
Definition Guid.h:109
static CORE_API FGuid NewGuid()
Definition Guid.cpp:236
Definition PropertyBag.h:418
Definition PropertyBag.h:249
Definition UnrealType.h:6865
Definition WeakObjectPtrTemplates.h:25
Definition DataflowNode.h:22
EDirection
Definition DataflowConnection.h:29
Definition DataflowSubGraphNodes.h:23
virtual void EvaluateParentContext(UE::Dataflow::FContext &Context, UE::Dataflow::FContext &SubGraphContext, const FDataflowOutput &SubGraphOutput) const =0