diff --git a/src/Engine/Network/NetworkManager.cpp b/src/Engine/Network/NetworkManager.cpp index 345aa40..ac36091 100644 --- a/src/Engine/Network/NetworkManager.cpp +++ b/src/Engine/Network/NetworkManager.cpp @@ -15,7 +15,7 @@ enzo::nt::OpId enzo::nt::NetworkManager::addOperator() { maxOpId_++; - gopStore_.emplace(maxOpId_, std::make_unique(maxOpId_, std::make_unique(maxOpId_))); + gopStore_.emplace(maxOpId_, std::make_unique(maxOpId_, &GOP_test::ctor)); std::cout << "adding operator " << maxOpId_ << "\n"; return maxOpId_; diff --git a/src/Engine/Operator/GOP_test.h b/src/Engine/Operator/GOP_test.h index 17e4ca2..db8e8ac 100644 --- a/src/Engine/Operator/GOP_test.h +++ b/src/Engine/Operator/GOP_test.h @@ -7,5 +7,9 @@ class GOP_test public: GOP_test(enzo::nt::OpId opId); virtual void cookOp(); + static enzo::nt::GeometryOpDef* ctor(enzo::nt::OpId opId) + { + return new GOP_test(opId); + } }; diff --git a/src/Engine/Operator/GeometryOperator.cpp b/src/Engine/Operator/GeometryOperator.cpp index 4f45d54..350eb5d 100644 --- a/src/Engine/Operator/GeometryOperator.cpp +++ b/src/Engine/Operator/GeometryOperator.cpp @@ -21,8 +21,8 @@ void enzo::nt::connectOperators(enzo::nt::OpId inputOpId, unsigned int inputInde outputOp.addInputConnection(newConnection); } -nt::GeometryOperator::GeometryOperator(enzo::nt::OpId opId, std::unique_ptr opDef) -: opId_{opId}, opDef_(std::move(opDef)) +nt::GeometryOperator::GeometryOperator(enzo::nt::OpId opId, enzo::nt::GeometryOpDef* (*ctorFunc)(enzo::nt::OpId)) +: opId_{opId}, opDef_(ctorFunc(opId)) { // TODO: drive by geometry definition maxInputs_=4; diff --git a/src/Engine/Operator/GeometryOperator.h b/src/Engine/Operator/GeometryOperator.h index c605a24..64ee13c 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, std::unique_ptr opDef); + GeometryOperator(enzo::nt::OpId opId, enzo::nt::GeometryOpDef* (*ctorFunc)(enzo::nt::OpId)); // disable copying GeometryOperator(const GeometryOperator&) = delete;