feat: basic geometry pass between operators

This commit is contained in:
parker
2025-07-08 19:13:15 +01:00
parent 0520d35b2c
commit 6f2a1ce532
7 changed files with 54 additions and 29 deletions

View File

@@ -8,11 +8,13 @@
#include <memory>
#include <stack>
#include <algorithm>
#include <string>
enzo::nt::OpId enzo::nt::NetworkManager::addOperator()
{
gopStore_.emplace(++maxOpId_, std::make_unique<GeometryOperator>());
maxOpId_++;
gopStore_.emplace(maxOpId_, std::make_unique<GeometryOperator>(maxOpId_));
std::cout << "adding operator " << maxOpId_ << "\n";
return maxOpId_;
@@ -30,6 +32,10 @@ enzo::nt::NetworkManager* enzo::nt::NetworkManager::getInstance()
enzo::nt::GeometryOperator& enzo::nt::NetworkManager::getGeoOperator(nt::OpId opId)
{
if(opId>gopStore_.size())
{
throw std::out_of_range("OpId: " + std::to_string(opId) + " > max opId: " + std::to_string(maxOpId_) + "\n");
}
return *gopStore_.at(opId);
}
@@ -78,27 +84,16 @@ void enzo::nt::NetworkManager::setDisplayOp(OpId opId)
std::cout << "size: " << dependencyGraph.size() << "\n";
for(enzo::nt::OpId dependencyOpId : dependencyGraph)
{
prevGeometry = cookOp(dependencyOpId, prevGeometry);
cookOp(dependencyOpId);
}
enzo::nt::GeometryOperator& displayOp = getGeoOperator(opId);
updateDisplay(displayOp.getOutputGeo(0));
}
enzo::geo::Geometry enzo::nt::NetworkManager::cookOp(enzo::nt::OpId opId, enzo::geo::Geometry inputGeometry)
void enzo::nt::NetworkManager::cookOp(enzo::nt::OpId opId)
{
std::shared_ptr<ga::Attribute> PAttr = inputGeometry.getAttribByName(ga::AttrOwner::POINT, "P");
ga::AttributeHandleVector3 PAttrHandle = ga::AttributeHandleVector3(PAttr);
enzo::nt::GeometryOperator& op = getGeoOperator(opId);
op.cookOp();
for(int i=0; i<PAttrHandle.getAllValues().size(); ++i)
{
enzo::bt::Vector3 vector = PAttrHandle.getValue(i);
vector.y()+=1;
PAttrHandle.setValue(i, vector);
}
return inputGeometry;
}
std::vector<enzo::nt::OpId> enzo::nt::NetworkManager::getDependencyGraph(enzo::nt::OpId opId)