feat: pass network manager reference to operatorDef

This commit is contained in:
parker
2025-07-14 17:00:52 +01:00
parent a1d4d77be4
commit 27dd461392
13 changed files with 23 additions and 78 deletions

View File

@@ -2,8 +2,8 @@
#include "Engine/Operator/AttributeHandle.h"
#include <oneapi/tbb/parallel_for.h>
GOP_test::GOP_test(enzo::nt::OpId opId)
: enzo::nt::GeometryOpDef(opId)
GOP_test::GOP_test(enzo::nt::OpId opId, enzo::nt::NetworkManager& networkManager)
: enzo::nt::GeometryOpDef(opId, networkManager)
{
}

View File

@@ -5,11 +5,11 @@ class GOP_test
: public enzo::nt::GeometryOpDef
{
public:
GOP_test(enzo::nt::OpId opId);
GOP_test(enzo::nt::OpId opId, enzo::nt::NetworkManager& networkManager);
virtual void cookOp();
static enzo::nt::GeometryOpDef* ctor(enzo::nt::OpId opId)
static enzo::nt::GeometryOpDef* ctor(enzo::nt::OpId opId, enzo::nt::NetworkManager& networkManager)
{
return new GOP_test(opId);
return new GOP_test(opId, networkManager);
}
};

View File

@@ -1,42 +0,0 @@
#include "Engine/Operator/GOP_transform.h"
#include "Engine/Operator/AttributeHandle.h"
#include <oneapi/tbb/parallel_for.h>
GOP_transform::GOP_transform(enzo::nt::OpId opId)
: enzo::nt::GeometryOpDef(opId)
{
}
void GOP_transform::cookOp()
{
using namespace enzo;
// std::cout << "COOKING\n";
if(outputRequested(0))
{
// copy input geometry
geo::Geometry geo = cloneInputGeo(0);
// ----
// create geometry start
// ----
auto PAttr = geo.getAttribByName(ga::AttrOwner::POINT, "P");
ga::AttributeHandleVector3 PAttrHandle(PAttr);
for(int i=0; i<PAttrHandle.getAllValues().size(); ++i)
{
enzo::bt::Vector3 vector = PAttrHandle.getValue(i);
vector.y()+=2.5;
PAttrHandle.setValue(i, vector);
}
// ----
// set output geometry
setOutputGeometry(0, geo);
}
}

View File

@@ -1,15 +0,0 @@
#pragma once
#include "Engine/Operator/GeometryOpDef.h"
class GOP_transform
: public enzo::nt::GeometryOpDef
{
public:
GOP_transform(enzo::nt::OpId opId);
virtual void cookOp();
static enzo::nt::GeometryOpDef* ctor(enzo::nt::OpId opId)
{
return new GOP_transform(opId);
}
};

View File

@@ -22,9 +22,8 @@ const enzo::geo::Geometry& enzo::nt::GeometryOpDef::getInputGeoView(unsigned int
enzo::geo::Geometry enzo::nt::GeometryOpDef::cloneInputGeo(unsigned int inputIndex)
{
auto& nm = nt::nm();
// TODO: implement
enzo::nt::GeometryOperator& selfOp = nm.getGeoOperator(opId_);
enzo::nt::GeometryOperator& selfOp = networkManager_.getGeoOperator(opId_);
std::vector<std::shared_ptr<const nt::GeometryConnection>> inputConnections = selfOp.getInputConnections();
if(inputConnections.size()==0)
{
@@ -32,7 +31,7 @@ enzo::geo::Geometry enzo::nt::GeometryOpDef::cloneInputGeo(unsigned int inputInd
return enzo::geo::Geometry();
}
std::shared_ptr<const nt::GeometryConnection> inputConnection = inputConnections.at(inputIndex);
return nm.getGeoOperator(inputConnection->getInputOpId()).getOutputGeo(inputConnection->getInputIndex());
return networkManager_.getGeoOperator(inputConnection->getInputOpId()).getOutputGeo(inputConnection->getInputIndex());
}
void enzo::nt::GeometryOpDef::setOutputGeometry(unsigned int outputIndex, enzo::geo::Geometry geometry)
@@ -44,8 +43,8 @@ void enzo::nt::GeometryOpDef::setOutputGeometry(unsigned int outputIndex, enzo::
outputGeometry_[outputIndex] = geometry;
}
enzo::nt::GeometryOpDef::GeometryOpDef(enzo::nt::OpId opId)
: opId_{opId}
enzo::nt::GeometryOpDef::GeometryOpDef(enzo::nt::OpId opId, NetworkManager& networkManager)
: opId_{opId}, networkManager_{networkManager}
{
minInputs_=1;
maxInputs_=4;

View File

@@ -3,13 +3,15 @@
#include "Engine/Types.h"
#include <boost/config.hpp>
namespace enzo::nt
{
class NetworkManager;
class BOOST_SYMBOL_EXPORT GeometryOpDef
{
public:
GeometryOpDef(enzo::nt::OpId opId);
GeometryOpDef(enzo::nt::OpId opId, NetworkManager& networkManager);
virtual void cookOp() = 0;
geo::Geometry& getOutputGeo(unsigned outputIndex);
private:
@@ -17,6 +19,7 @@ private:
unsigned int minInputs_;
unsigned int maxInputs_;
unsigned int maxOutputs_;
NetworkManager& networkManager_;
protected:
enzo::nt::OpId opId_;
const enzo::geo::Geometry& getInputGeoView(unsigned int inputIndex);
@@ -27,5 +30,5 @@ protected:
void setOutputGeometry(unsigned int outputIndex, enzo::geo::Geometry geometry);
};
using opConstructor = GeometryOpDef* (*)(enzo::nt::OpId);
using opConstructor = GeometryOpDef* (*)(enzo::nt::OpId, enzo::nt::NetworkManager&);
}

View File

@@ -24,7 +24,7 @@ void enzo::nt::connectOperators(enzo::nt::OpId inputOpId, unsigned int inputInde
}
nt::GeometryOperator::GeometryOperator(enzo::nt::OpId opId, nt::opConstructor ctorFunc)
: opId_{opId}, opDef_(ctorFunc(opId))
: opId_{opId}, opDef_(ctorFunc(opId, nt::nm()))
{
// TODO: drive by geometry definition
maxInputs_=4;

View File

@@ -11,7 +11,7 @@ void connectOperators(enzo::nt::OpId inputOpId, unsigned int inputIndex, enzo::n
class GeometryOperator
{
public:
GeometryOperator(enzo::nt::OpId opId, enzo::nt::GeometryOpDef* (*ctorFunc)(enzo::nt::OpId));
GeometryOperator(enzo::nt::OpId opId, nt::opConstructor ctorFunc);
// disable copying
GeometryOperator(const GeometryOperator&) = delete;

View File

@@ -20,7 +20,6 @@
#include <qnamespace.h>
#include <QLine>
#include "Engine/Operator/GOP_test.h"
#include "Engine/Operator/GOP_transform.h"
using namespace enzo;

View File

@@ -11,6 +11,8 @@ add_library(${libName} SHARED
main.cpp
../Engine/Operator/OperatorTable.cpp
../Engine/Operator/GeometryOpDef.cpp
../Engine/Operator/GeometryOperator.cpp
../Engine/Operator/GeometryConnection.cpp
../Engine/Operator/Geometry.cpp
../Engine/Operator/Attribute.cpp
../Engine/Network/NetworkManager.cpp

View File

@@ -5,11 +5,11 @@ class GopTransform
: public enzo::nt::GeometryOpDef
{
public:
GopTransform(enzo::nt::OpId opId);
GopTransform(enzo::nt::OpId opId, enzo::nt::NetworkManager& networkManager);
virtual void cookOp();
static enzo::nt::GeometryOpDef* ctor(enzo::nt::OpId opId)
static enzo::nt::GeometryOpDef* ctor(enzo::nt::OpId opId, enzo::nt::NetworkManager& networkManager)
{
return new GopTransform(opId);
return new GopTransform(opId, networkManager);
}
};

View File

@@ -17,8 +17,8 @@ extern "C"
}
GopTransform::GopTransform(enzo::nt::OpId opId)
: enzo::nt::GeometryOpDef(opId)
GopTransform::GopTransform(enzo::nt::OpId opId, enzo::nt::NetworkManager& networkManager)
: enzo::nt::GeometryOpDef(opId, networkManager)
{
}