20#define DATAFLOW_EDITOR_EVALUATION WITH_EDITOR
34 FString
Name = FString(
"");
101 CriticalSection->Lock();
114 CriticalSection->Unlock();
115 CriticalSection =
nullptr;
160 if (
IsA(T::StaticType()))
162 return static_cast<const T*
>(
this);
170 if (
IsA(T::StaticType()))
172 return static_cast<T*
>(
this);
202 if constexpr (std::is_same_v<T, FContextValue>)
267 UE_DEPRECATED(5.7,
"Use UE::Dataflow::FContextValue from calling GetValue on the node to access the same functionality")
354#if DATAFLOW_EDITOR_EVALUATION
381#define DATAFLOW_CONTEXT_INTERNAL(PARENTTYPE, TYPENAME) \
382 typedef PARENTTYPE Super; \
383 static FName StaticType() { return FName(#TYPENAME); } \
384 virtual bool IsA(FName InType) const override { return InType==StaticType() || Super::IsA(InType); } \
385 virtual FName GetType() const override { return StaticType(); }
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Archive.h:1208
Definition NameTypes.h:617
Definition UnrealType.h:174
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
bool IsValid() const
Definition UniquePtr.h:280
Definition DataflowObject.h:106
Definition DataflowNodeParameters.h:388
DATAFLOW_CONTEXT_INTERNAL(FContext, FContextSingle)
Definition DataflowNodeParameters.h:394
FContextThreaded()
Definition DataflowNodeParameters.h:398
DATAFLOW_CONTEXT_INTERNAL(FContext, FContextThreaded)
Definition DataflowNodeParameters.h:134
DATAFLOWCORE_API void ClearAllPerfData()
Definition DataflowNodeParameters.cpp:315
DATAFLOWCORE_API void PopFromCallstack(const FDataflowConnection *Connection)
Definition DataflowNodeParameters.cpp:346
DATAFLOWCORE_API bool HasData(FContextCacheKey Key, FTimestamp InTimestamp=FTimestamp::Invalid) const
Definition DataflowNodeParameters.cpp:155
DATAFLOWCORE_API void SetNullData(FContextCacheKey InKey, const FProperty *InProperty, const FGuid &InNodeGuid, uint32 InNodeHash, const FTimestamp &InTimestamp)
Definition DataflowNodeParameters.cpp:140
DATAFLOWCORE_API bool IsEmpty() const
Definition DataflowNodeParameters.cpp:161
DATAFLOWCORE_API int32 GetNumErrors() const
Definition DataflowNodeParameters.cpp:453
virtual DATAFLOWCORE_API const TUniquePtr< FContextCacheElementBase > * GetDataImpl(FContextCacheKey Key) const
Definition DataflowNodeParameters.cpp:225
DATAFLOWCORE_API void ClearAllData()
Definition DataflowNodeParameters.cpp:243
DATAFLOWCORE_API bool CopyDataToAnotherContext(const FContextCacheKey InSourceKey, FContext &TargetContext, const FContextCacheKey InTargetKey, const FProperty *InProperty, const FGuid &InNodeGuid, uint32 InNodeHash, const FTimestamp &InTimestamp) const
Definition DataflowNodeParameters.cpp:540
DATAFLOWCORE_API void SetDataReference(FContextCacheKey Key, const FProperty *Property, FContextCacheKey ReferenceKey, const FTimestamp &InTimestamp)
Definition DataflowNodeParameters.cpp:121
virtual DATAFLOWCORE_API UObject * CommitAsset(const FString &AssetPath) override
Definition DataflowNodeParameters.cpp:681
DATAFLOWCORE_API void SetDataFromStructView(FContextCacheKey InKey, const FProperty *InProperty, const FConstStructView &StructView, const FGuid &InNodeGuid, uint32 InNodeHash, const FTimestamp &InTimestamp)
Definition DataflowNodeParameters.cpp:109
DATAFLOWCORE_API void SetThreaded(bool bValue)
Definition DataflowNodeParameters.cpp:183
TUniquePtr< FCriticalSection > DataLock
Definition DataflowNodeParameters.h:143
static FName StaticType()
Definition DataflowNodeParameters.h:151
FContextEvaluator AsyncEvaluator
Definition DataflowNodeParameters.h:145
FOnNodeFinishEvaluateMulticast OnNodeFinishEvaluateMulticast
Definition DataflowNodeParameters.h:334
DATAFLOWCORE_API const void * GetUntypedData(FContextCacheKey Key, const FProperty *InProperty) const
Definition DataflowNodeParameters.cpp:146
DATAFLOWCORE_API void PushToCallstack(const FDataflowConnection *Connection)
Definition DataflowNodeParameters.cpp:339
FOnContextHasWarningMulticast OnContextHasWarning
Definition DataflowNodeParameters.h:340
FOnContextHasErrorMulticast OnContextHasError
Definition DataflowNodeParameters.h:343
DATAFLOWCORE_API void SetDataFromStructArrayView(FContextCacheKey InKey, const FProperty *InProperty, const FConstStructArrayView &StructArrayView, const FGuid &InNodeGuid, uint32 InNodeHash, const FTimestamp &InTimestamp)
Definition DataflowNodeParameters.cpp:115
FContext()
Definition DataflowNodeParameters.h:148
virtual DATAFLOWCORE_API bool HasCacheElement(FContextCacheKey InKey, FTimestamp InTimestamp=FTimestamp::Invalid) const override
Definition DataflowNodeParameters.cpp:178
DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnContextHasInfoMulticast, const FDataflowNode *Node, const FDataflowOutput *Output, const FString &Info)
DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnContextHasWarningMulticast, const FDataflowNode *Node, const FDataflowOutput *Output, const FString &Info)
DATAFLOWCORE_API void GetAsyncEvaluationStats(int32 &OutNumPendingTasks, int32 &OutNumRunningTasks, int32 &OutNumCompletedTasks) const
Definition DataflowNodeParameters.cpp:208
const T & GetData(FContextCacheKey Key, const FProperty *InProperty, const T &Default=T()) const
Definition DataflowNodeParameters.h:276
FOnContextHasInfoMulticast OnContextHasInfo
Definition DataflowNodeParameters.h:337
DATAFLOWCORE_API bool IsCacheEntryAfterTimestamp(FContextCacheKey InKey, const FTimestamp InTimestamp) const
Definition DataflowNodeParameters.cpp:366
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnNodeFinishEvaluateMulticast, const FDataflowNode *Node, const FDataflowOutput *Output)
DATAFLOWCORE_API void EnablePerfData(bool bEnable)
Definition DataflowNodeParameters.cpp:322
virtual DATAFLOWCORE_API int32 GetKeys(TSet< FContextCacheKey > &InKeys) const
Definition DataflowNodeParameters.cpp:213
DATAFLOWCORE_API int32 GetNumWarnings() const
Definition DataflowNodeParameters.cpp:414
DATAFLOWCORE_API int32 GetNumInfo() const
Definition DataflowNodeParameters.cpp:397
FContextCache DataStore
Definition DataflowNodeParameters.h:142
void SetData(FContextCacheKey InKey, const FProperty *InProperty, T &&InValue, const FGuid &InNodeGuid, uint32 InNodeHash, const FTimestamp &InTimestamp)
Definition DataflowNodeParameters.h:198
virtual bool IsA(FName InType) const
Definition DataflowNodeParameters.h:153
virtual FName GetType() const
Definition DataflowNodeParameters.h:155
DATAFLOWCORE_API void BeginContextEvaluation(const FDataflowNode *Node, const FDataflowOutput *Output)
Definition DataflowNodeParameters.cpp:556
DATAFLOWCORE_API bool IsInCallstack(const FDataflowConnection *Connection) const
Definition DataflowNodeParameters.cpp:357
bool NodeFailed(const FDataflowNode *InNode)
Definition DataflowNodeParameters.h:325
FContext & operator=(const FContext &)=delete
FContext(const FContext &)=delete
DATAFLOWCORE_API void AddExternalPerfData(const FContextPerfData &InPerfData)
Definition DataflowNodeParameters.cpp:308
DATAFLOWCORE_API void CancelAsyncEvaluation()
Definition DataflowNodeParameters.cpp:203
DATAFLOWCORE_API const FContextPerfData & GetPerfData() const
Definition DataflowNodeParameters.cpp:258
virtual DATAFLOWCORE_API void SetDataImpl(FContextCacheKey Key, TUniquePtr< FContextCacheElementBase > &&DataStoreEntry)
Definition DataflowNodeParameters.cpp:219
DATAFLOWCORE_API void Evaluate(const FDataflowNode *Node, const FDataflowOutput *Output, FOnPostEvaluationFunction PostEvaluationFunction)
Definition DataflowNodeParameters.cpp:600
virtual DATAFLOWCORE_API void ClearAssets() override
Definition DataflowNodeParameters.cpp:686
FContext & operator=(FContext &&)=delete
virtual DATAFLOWCORE_API bool IsEmptyImpl() const
Definition DataflowNodeParameters.cpp:237
FContext(FContext &&)=delete
bool NodeHasWarning(const FDataflowNode *InNode)
Definition DataflowNodeParameters.h:323
DATAFLOWCORE_API void ClearNodeData(const FDataflowNode *InNode)
Definition DataflowNodeParameters.cpp:466
DATAFLOWCORE_API bool IsPerfDataEnabled() const
Definition DataflowNodeParameters.cpp:329
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnNodeBeginEvaluateMulticast, const FDataflowNode *Node, const FDataflowOutput *Output)
DATAFLOWCORE_API void SetArrayElementFromData(const FContextCacheKey InArrayKey, int32 Index, const FContextCacheKey InElementKey, const FProperty *InProperty, const FGuid &InNodeGuid, uint32 InNodeHash, const FTimestamp &InTimestamp)
Definition DataflowNodeParameters.cpp:523
DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnContextHasErrorMulticast, const FDataflowNode *Node, const FDataflowOutput *Output, const FString &Info)
DATAFLOWCORE_API bool IsAsyncEvaluating() const
Definition DataflowNodeParameters.cpp:198
virtual DATAFLOWCORE_API UObject * AddAsset(const FString &AssetPath, const UClass *AssetClass) override
Definition DataflowNodeParameters.cpp:676
const T * AsType() const
Definition DataflowNodeParameters.h:158
bool IsThreaded() const
Definition DataflowNodeParameters.h:177
DATAFLOWCORE_API void ClearNodesData()
Definition DataflowNodeParameters.cpp:458
virtual DATAFLOWCORE_API const TUniquePtr< FContextCacheElementBase > * FindCacheElement(FContextCacheKey InKey) const override
Definition DataflowNodeParameters.cpp:173
T * AsType()
Definition DataflowNodeParameters.h:168
virtual ~FContext()=default
DATAFLOWCORE_API int32 GetArraySizeFromData(const FContextCacheKey InKey) const
Definition DataflowNodeParameters.cpp:511
DATAFLOWCORE_API FContextPerfData::FData GetPerfDataForNode(const FDataflowNode &Node) const
Definition DataflowNodeParameters.cpp:268
FOnNodeBeginEvaluateMulticast OnNodeBeginEvaluateMulticast
Definition DataflowNodeParameters.h:331
DATAFLOWCORE_API void ResetPerfDataForNode(const FDataflowNode &Node)
Definition DataflowNodeParameters.cpp:289
virtual DATAFLOWCORE_API bool HasDataImpl(FContextCacheKey Key, FTimestamp InTimestamp=FTimestamp::Invalid) const
Definition DataflowNodeParameters.cpp:231
bool NodeHasError(const FDataflowNode *InNode)
Definition DataflowNodeParameters.h:324
DATAFLOWCORE_API FTimestamp GetTimestamp(FContextCacheKey Key) const
Definition DataflowNodeParameters.cpp:249
Definition DataflowNodeParameters.h:94
void Unlock()
Definition DataflowNodeParameters.h:110
UE_NODISCARD_CTOR FScopedOptionalLock(FCriticalSection *InCriticalSection)
Definition DataflowNodeParameters.h:96
~FScopedOptionalLock()
Definition DataflowNodeParameters.h:105
Definition DataflowAnyType.cpp:10
uint32 FContextCacheKey
Definition DataflowContextCache.h:23
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
Definition StructArrayView.h:398
Definition StructView.h:217
Definition DataflowConnection.h:131
Definition DataflowNode.h:52
Definition DataflowInputOutput.h:149
UE::Core::Private::Decay::TDecayNonReference< typenameTRemoveReference< T >::Type >::Type Type
Definition Decay.h:45
Definition DataflowContextAssetStore.h:50
Definition DataflowContextCache.h:65
Definition DataflowContextCache.h:591
Definition DataflowNodeParameters.h:79
uint64 ExternalTime
Definition DataflowNodeParameters.h:82
uint64 StartTime
Definition DataflowNodeParameters.h:81
bool operator==(const FDataflowConnection *OtherConnection) const
Definition DataflowNodeParameters.h:84
const FDataflowConnection * Connection
Definition DataflowNodeParameters.h:80
Definition DataflowNodeParameters.h:69
int32 Num() const
Definition DataflowNodeParameters.cpp:89
const FDataflowConnection * Top() const
Definition DataflowNodeParameters.cpp:80
void Pop(const FDataflowConnection *Connection, uint64 &OutTotalTime, uint64 &OutExternalTime)
Definition DataflowNodeParameters.cpp:61
TArray< FEntry > Callstack
Definition DataflowNodeParameters.h:89
bool Contains(const FDataflowConnection *Connection) const
Definition DataflowNodeParameters.cpp:99
const FDataflowConnection * operator[](int32 Index)
Definition DataflowNodeParameters.cpp:94
void Push(const FDataflowConnection *Connection)
Definition DataflowNodeParameters.cpp:50
Definition DataflowContextEvaluator.h:27
Definition DataflowNodeParameters.h:52
int32 NumCalls
Definition DataflowNodeParameters.h:55
float InclusiveTimeMs
Definition DataflowNodeParameters.h:53
float ExclusiveTimeMs
Definition DataflowNodeParameters.h:54
FTimestamp LastTimestamp
Definition DataflowNodeParameters.h:56
Definition DataflowNodeParameters.h:46
TMap< FGuid, FData > DataPerOutput
Definition DataflowNodeParameters.h:58
void Reset()
Definition DataflowNodeParameters.cpp:18
bool bEnabled
Definition DataflowNodeParameters.h:59
Definition DataflowNodeParameters.h:368
bool IsLoopDetected() const
Definition DataflowNodeParameters.h:373
DATAFLOWCORE_API ~FContextScopedCallstack()
Definition DataflowNodeParameters.cpp:484
Definition DataflowContextCache.h:640
Definition DataflowNodeParameters.h:25
FName ViewMode
Definition DataflowNodeParameters.h:37
FRenderingParameter(FString InRenderName, FName InTypeName, const TArray< FName > &InOutputs, const FName &InViewMode=FName("3DView"))
Definition DataflowNodeParameters.h:27
FName Type
Definition DataflowNodeParameters.h:35
FString Name
Definition DataflowNodeParameters.h:34
FRenderingParameter(FString InRenderName, FName InTypeName, TArray< FName > &&InOutputs, const FName &InViewMode=FName("3DView"))
Definition DataflowNodeParameters.h:29
FRenderingParameter()
Definition DataflowNodeParameters.h:26
TArray< FName > Outputs
Definition DataflowNodeParameters.h:36
bool operator==(const FRenderingParameter &Other) const =default
Definition DataflowContextCache.h:40
static DATAFLOWCORE_API Type Invalid
Definition DataflowContextCache.h:52
Definition DataflowContextAssetStore.h:15
Definition DataflowContextCache.h:56
Definition DataflowContextCache.h:35
Definition DataflowContextCache.h:28