UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DataflowContextEvaluator.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Containers/Array.h"
7#include "Misc/Guid.h"
10
11struct FDataflowNode;
12struct FDataflowOutput;
13
14namespace UE::Dataflow
15{
16 class FContext;
17
19
20 /*
21 * Asynchronously evaluate a dataflow nodes
22 * This may be slower than executing the graph in one go synchronously but this offers the following advantage:
23 * - this can be cancelled at anytime ( only the in progress node will have finish evaluating while all the pending ones will be discarded )
24 * - nodes that need to run on the game thread will do so ( see FDataflowNode EvaluateOnGameThreadOnly method )
25 */
27 {
28 public:
29 using FNodeId = FGuid;
30
32 {
36
38 {
39 return Id == Other.Id;
40 }
41 bool operator == (const FNodeId& Other) const
42 {
43 return (Id == Other);
44 }
45
46 FString ToString() const;
47 };
48
52
53 void ScheduleNodeEvaluation(const FDataflowNode& Node, FOnPostEvaluationFunction OnPostEvaluation);
55
56 void Process();
57 void Cancel();
59
60 int32 GetNumPendingTasks() const { return PendingEvaluationEntries.Num(); }
61 int32 GetNumRunningTasks() const { return RunningTasks.Num(); }
62 int32 GetNumCompletedTasks() const { return CompletedTasks.Num(); }
63
64 private:
65 bool IsScheduledOrRunning(const FNodeId& Id) const;
66
67 void FindInvalidUpstreamNodes(const FDataflowNode& Node, TArray<const FDataflowNode*>& OutInvalidUpstreamNodes);
68 bool ShouldRunOnGameThread(const FDataflowNode& Node);
69 void ScheduleEvaluation(const FEvaluationEntry& Entry);
70
71 bool TryScheduleTask(const FEvaluationEntry& Entry);
72 void ScheduleTask(const FEvaluationEntry& Entry);
73 void ClearCompletedTasks();
74
75 FContext& OwningContext;
76 TMap<FNodeId, FEvaluationEntry> PendingEvaluationEntries;
78 TSet<FNodeId> CompletedTasks;
79 };
80}
81
82
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
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
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:1295
Definition DataflowNodeParameters.h:134
Definition DataflowAnyType.cpp:10
Definition DataflowNode.h:52
Definition DataflowInputOutput.h:149
Definition Guid.h:109
Definition DataflowContextEvaluator.h:32
TWeakPtr< const FDataflowNode > WeakNode
Definition DataflowContextEvaluator.h:34
bool operator==(const FEvaluationEntry &Other) const
Definition DataflowContextEvaluator.h:37
FString ToString() const
Definition DataflowContextEvaluator.cpp:255
FOnPostEvaluationFunction OnPostEvaluation
Definition DataflowContextEvaluator.h:35
FNodeId Id
Definition DataflowContextEvaluator.h:33
Definition DataflowContextEvaluator.h:27
FContextEvaluator(FContext &InOwningContext)
Definition DataflowContextEvaluator.h:49
void ScheduleNodeEvaluation(const FDataflowNode &Node, FOnPostEvaluationFunction OnPostEvaluation)
Definition DataflowContextEvaluator.cpp:8
int32 GetNumCompletedTasks() const
Definition DataflowContextEvaluator.h:62
void Process()
Definition DataflowContextEvaluator.cpp:141
void Cancel()
Definition DataflowContextEvaluator.cpp:65
int32 GetNumRunningTasks() const
Definition DataflowContextEvaluator.h:61
int32 GetNumPendingTasks() const
Definition DataflowContextEvaluator.h:60
void GetStats(int32 &OutNumPendingTasks, int32 &OutNumRunningTasks, int32 &OutNumCompletedTasks) const
Definition DataflowContextEvaluator.cpp:131
FGuid FNodeId
Definition DataflowContextEvaluator.h:29
void ScheduleOutputEvaluation(const FDataflowOutput &Output, FOnPostEvaluationFunction OnPostEvaluation)
Definition DataflowContextEvaluator.cpp:20