diff --git a/CMakeLists.txt b/CMakeLists.txt index d84efcb..9aa414a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,6 @@ set(ENGINE_SOURCES src/Engine/Operator/GeometryOpDef.cpp src/Engine/Operator/OperatorTable.cpp src/Engine/Operator/GOP_test.cpp - src/Engine/Operator/GOP_transform.cpp src/Engine/Network/NetworkManager.cpp ) diff --git a/src/Engine/Operator/GOP_test.cpp b/src/Engine/Operator/GOP_test.cpp index 7e09b3c..86bbf3d 100644 --- a/src/Engine/Operator/GOP_test.cpp +++ b/src/Engine/Operator/GOP_test.cpp @@ -2,8 +2,8 @@ #include "Engine/Operator/AttributeHandle.h" #include -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) { } diff --git a/src/Engine/Operator/GOP_test.h b/src/Engine/Operator/GOP_test.h index db8e8ac..69e9da6 100644 --- a/src/Engine/Operator/GOP_test.h +++ b/src/Engine/Operator/GOP_test.h @@ -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); } }; diff --git a/src/Engine/Operator/GOP_transform.cpp b/src/Engine/Operator/GOP_transform.cpp deleted file mode 100644 index 1311345..0000000 --- a/src/Engine/Operator/GOP_transform.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include "Engine/Operator/GOP_transform.h" -#include "Engine/Operator/AttributeHandle.h" -#include - -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> 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 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; diff --git a/src/Engine/Operator/GeometryOpDef.h b/src/Engine/Operator/GeometryOpDef.h index 87677e5..e5b0177 100644 --- a/src/Engine/Operator/GeometryOpDef.h +++ b/src/Engine/Operator/GeometryOpDef.h @@ -3,13 +3,15 @@ #include "Engine/Types.h" #include + 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&); } diff --git a/src/Engine/Operator/GeometryOperator.cpp b/src/Engine/Operator/GeometryOperator.cpp index 1b31110..ed4b7b2 100644 --- a/src/Engine/Operator/GeometryOperator.cpp +++ b/src/Engine/Operator/GeometryOperator.cpp @@ -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; diff --git a/src/Engine/Operator/GeometryOperator.h b/src/Engine/Operator/GeometryOperator.h index 64ee13c..0ad5b97 100644 --- a/src/Engine/Operator/GeometryOperator.h +++ b/src/Engine/Operator/GeometryOperator.h @@ -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; diff --git a/src/Gui/Network/Network.cpp b/src/Gui/Network/Network.cpp index 0167eba..bc231b2 100644 --- a/src/Gui/Network/Network.cpp +++ b/src/Gui/Network/Network.cpp @@ -20,7 +20,6 @@ #include #include #include "Engine/Operator/GOP_test.h" -#include "Engine/Operator/GOP_transform.h" using namespace enzo; diff --git a/src/OpDefs/CMakeLists.txt b/src/OpDefs/CMakeLists.txt index 09f993f..094859f 100644 --- a/src/OpDefs/CMakeLists.txt +++ b/src/OpDefs/CMakeLists.txt @@ -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 diff --git a/src/OpDefs/GopTransform.hpp b/src/OpDefs/GopTransform.hpp index ada4397..49fabad 100644 --- a/src/OpDefs/GopTransform.hpp +++ b/src/OpDefs/GopTransform.hpp @@ -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); } }; diff --git a/src/OpDefs/main.cpp b/src/OpDefs/main.cpp index 228d841..0afa2f4 100644 --- a/src/OpDefs/main.cpp +++ b/src/OpDefs/main.cpp @@ -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) { }