feat: add graph traversal function

This commit is contained in:
parker
2025-07-06 14:29:25 +01:00
parent 58ac608f84
commit d6b630bc08
7 changed files with 73 additions and 35 deletions

View File

@@ -3,6 +3,8 @@
#include "Engine/Types.h"
#include <iostream>
#include <memory>
#include <stack>
#include <algorithm>
enzo::nt::OpId enzo::nt::NetworkManager::addOperator()
{
@@ -41,8 +43,38 @@ bool enzo::nt::NetworkManager::isValidOp(nt::OpId opId)
void enzo::nt::NetworkManager::setDisplayOp(OpId opId)
{
displayOp_=opId;
getTraversalGraph(opId);
}
void enzo::nt::NetworkManager::cookOp(enzo::nt::OpId opId)
{
std::cout << "COOKING: " << opId << "\n";
}
std::vector<enzo::nt::OpId> enzo::nt::NetworkManager::getTraversalGraph(enzo::nt::OpId opId)
{
std::stack<enzo::nt::OpId> traversalBuffer;
std::vector<enzo::nt::OpId> traversalGraph;
traversalBuffer.push(opId);
while(traversalBuffer.size()!=0)
{
enzo::nt::OpId currentOp = traversalBuffer.top();
std::cout << "cooking node: " << currentOp << "\n";
traversalBuffer.pop();
auto inputConnections = getGeoOperator(currentOp).getInputConnections();
for(auto connection : inputConnections)
{
traversalBuffer.push(connection->getInputOpId());
traversalGraph.push_back(connection->getInputOpId());
}
}
std::reverse(traversalGraph.begin(), traversalGraph.end());
return traversalGraph;
}
std::optional<enzo::nt::OpId> enzo::nt::NetworkManager::getDisplayOp()
{
return displayOp_;