UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DataflowNodeFactory.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "UObject/Package.h"
8
9struct FDataflowNode;
11
12namespace UE::Dataflow
13{
21
23 {
27 FString Tags;
28 FString ToolTip;
29 bool bIsDeprecated = false;
30 bool bIsExperimental = false;
33
34 bool IsValid() const
35 {
36 return !TypeName.ToString().IsEmpty() && !DisplayName.ToString().IsEmpty();
37 }
38
39 bool IsDeprecated() const
40 {
41 return bIsDeprecated;
42 }
43
44 bool IsExperimental() const
45 {
46 return bIsExperimental;
47 }
48
50 {
51 return NodeVersion;
52 }
53 };
54
55 //
56 //
57 //
59 {
60 public:
62
63 private:
64 typedef TUniquePtr<FDataflowNode> FRawNewNodeFunction(const FNewNodeParameters&);
65
66 // All Maps indexed by TypeName
67 TMap<FName, FNewNodeFunction > ClassMap; // [TypeName] -> NewNodeFunction
68 TMap<FName, FFactoryParameters > ParametersMap; // [TypeName] -> Parameters
69 TMap<FName, TArray<FName>> VersionMap; // [TypeNameNoVersion] -> Array of TypeName(versions)
70
71 TMap<FName, FName> GetterNodesByAssetType; // list of getter nodes that relate to a specific asset type
72
73 DATAFLOWCORE_API static FNodeFactory* Instance;
75
76 static DATAFLOWCORE_API void RegisterNodeStaticInternal(
77 UScriptStruct* StaticStruct, FName StaticType, const char* StaticDisplay, const char* StaticCategory,
78 const FString& StaticTags, FRawNewNodeFunction CreationFunction
79 );
80
81 public:
83
85
86 template<typename T>
88 {
90 {
92 Val->ValidateProperties();
93 Val->ValidateConnections();
94 return Val;
95 };
96
97 RegisterNodeStaticInternal(
98 T::StaticStruct(), T::StaticType(), T::StaticDisplay(), T::StaticCategory(),
99 T::StaticTags(), CreationFunction
100 );
101 }
102
104
106
108
110
112
113 DATAFLOWCORE_API static bool IsNodeDeprecated(const FName NodeType);
114
115 DATAFLOWCORE_API static bool IsNodeExperimental(const FName NodeType);
116
117 private:
118 DATAFLOWCORE_API void RegisterNode(const FFactoryParameters& Parameters, FNewNodeFunction NewFunction);
119
120 DATAFLOWCORE_API static FName GetVersionFromTypeName(const FName& TypeName);
121
122 DATAFLOWCORE_API static int32 GetNumVersionFromVersion(const FName& Version);
123
125
127
128 DATAFLOWCORE_API static FName GetTypeNameNoVersion(const FName& TypeName);
129
130 DATAFLOWCORE_API static FName GetDisplayNameNoVersion(const FName& DisplayName);
131
132 DATAFLOWCORE_API static FString GetToolTipFromStruct(UScriptStruct* InStruct, const FName& InTypeName, const FName& InDisplayName);
133
134 template<class T> TSharedPtr<T> NewNode(FGraph& Graph, const FNewNodeParameters& Param)
135 {
136 return Graph.AddNode(new T(Param.Name, Param.Guid));
137 }
138
139 DATAFLOWCORE_API void RegisterDefaultNodes();
140 };
141}
142
143
#define TEXT(x)
Definition Platform.h:1272
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
UScriptStruct * StaticStruct()
Definition ReflectedTypeAccessors.h:18
float Val(const FString &Value)
Definition UnrealMath.cpp:3163
Definition NameTypes.h:617
CORE_API FString ToString() const
Definition UnrealNames.cpp:3537
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition UniquePtr.h:107
Definition Class.h:3793
Definition DataflowGraph.h:71
Definition DataflowNodeFactory.h:59
DATAFLOWCORE_API ~FNodeFactory()
Definition DataflowNodeFactory.cpp:25
static DATAFLOWCORE_API bool IsNodeExperimental(const FName NodeType)
Definition DataflowNodeFactory.cpp:219
DATAFLOWCORE_API void RegisterGetterNodeForAssetType(FName AssetTypeName, FName NodeTypeName)
Definition DataflowNodeFactory.cpp:159
static void RegisterNodeFromType()
Definition DataflowNodeFactory.h:87
static DATAFLOWCORE_API FNodeFactory * GetInstance()
Definition DataflowNodeFactory.cpp:30
DATAFLOWCORE_API TArray< FFactoryParameters > RegisteredParameters() const
Definition DataflowNodeFactory.cpp:396
TFunction< TUniquePtr< FDataflowNode >(const FNewNodeParameters &)> FNewNodeFunction
Definition DataflowNodeFactory.h:61
static DATAFLOWCORE_API bool IsNodeDeprecated(const FName NodeType)
Definition DataflowNodeFactory.cpp:204
DATAFLOWCORE_API FName GetGetterNodeFromAssetClass(const UClass &AssetClass) const
Definition DataflowNodeFactory.cpp:168
DATAFLOWCORE_API const FFactoryParameters & GetParameters(FName InTypeName) const
Definition DataflowNodeFactory.cpp:252
DATAFLOWCORE_API TSharedPtr< FDataflowNode > NewNodeFromRegisteredType(FGraph &Graph, const FNewNodeParameters &Param)
Definition DataflowNodeFactory.cpp:87
Definition Object.h:95
Definition Class.h:1720
Definition Class.h:480
Definition DataflowAnyType.cpp:10
Definition DataflowConnection.h:131
Definition DataflowNode.h:52
Definition Guid.h:109
Definition DataflowNodeFactory.h:23
bool IsValid() const
Definition DataflowNodeFactory.h:34
FName Category
Definition DataflowNodeFactory.h:26
TSharedPtr< FDataflowNode > DefaultNodeObject
Definition DataflowNodeFactory.h:32
bool bIsDeprecated
Definition DataflowNodeFactory.h:29
FString ToolTip
Definition DataflowNodeFactory.h:28
bool IsExperimental() const
Definition DataflowNodeFactory.h:44
FString Tags
Definition DataflowNodeFactory.h:27
FName NodeVersion
Definition DataflowNodeFactory.h:31
bool IsDeprecated() const
Definition DataflowNodeFactory.h:39
FName GetVersion() const
Definition DataflowNodeFactory.h:49
bool bIsExperimental
Definition DataflowNodeFactory.h:30
FName DisplayName
Definition DataflowNodeFactory.h:25
FName TypeName
Definition DataflowNodeFactory.h:24
Definition DataflowNodeFactory.h:15
FGuid Guid
Definition DataflowNodeFactory.h:16
FName Name
Definition DataflowNodeFactory.h:18
FName Type
Definition DataflowNodeFactory.h:17
UObject * OwningObject
Definition DataflowNodeFactory.h:19
Definition DataflowNode.h:22
FName Name
Definition DataflowNode.h:23