Polyphase Game Engine
Loading...
Searching...
No Matches
GraphProcessor.h
Go to the documentation of this file.
1#pragma once
2
4
5#include <vector>
6
7class GraphNode;
8class NodeGraph;
9
11{
12public:
13
14 void Evaluate(NodeGraph* graph, const char* eventName = nullptr);
15
16 const std::vector<GraphNodeId>& GetEvaluationOrder() const { return mEvaluationOrder; }
17 bool HasCycles() const { return mHasCycles; }
18
19private:
20
21 void TopologicalSort(NodeGraph* graph);
22 void PropagateValues(NodeGraph* graph);
23 void ResetExecutionFlags(NodeGraph* graph);
24 bool HasExecutionInputPin(GraphNode* node) const;
25 bool HasAnyExecutionTriggered(GraphNode* node) const;
26 void PropagateExecutionOutputs(NodeGraph* graph, GraphNode* node);
27
28 std::vector<GraphNodeId> mEvaluationOrder;
29 bool mHasCycles = false;
30};
Definition GraphNode.h:73
Definition GraphProcessor.h:11
void Evaluate(NodeGraph *graph, const char *eventName=nullptr)
Definition GraphProcessor.cpp:12
bool HasCycles() const
Definition GraphProcessor.h:17
const std::vector< GraphNodeId > & GetEvaluationOrder() const
Definition GraphProcessor.h:16
Definition NodeGraph.h:17