diff --git a/CMakeLists.txt b/CMakeLists.txt index af3c84f..d84efcb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,7 +67,7 @@ qt_add_executable(${AppExec} ${ENGINE_SOURCES} ) -target_link_libraries(${AppExec} PRIVATE Qt6::Core Qt6::Widgets Qt6::SvgWidgets Qt6::OpenGLWidgets glm::glm Eigen3::Eigen TBB::tbb) +target_link_libraries(${AppExec} PRIVATE Qt6::Core Qt6::Widgets Qt6::SvgWidgets Qt6::OpenGLWidgets glm::glm Eigen3::Eigen TBB::tbb Boost::filesystem Boost::system) target_include_directories(${AppExec} PUBLIC src) # tests diff --git a/src/Engine/Network/NetworkManager.cpp b/src/Engine/Network/NetworkManager.cpp index 5a536f6..c4f9eb6 100644 --- a/src/Engine/Network/NetworkManager.cpp +++ b/src/Engine/Network/NetworkManager.cpp @@ -32,6 +32,7 @@ enzo::nt::NetworkManager* enzo::nt::NetworkManager::getInstance() enzo::nt::GeometryOperator& enzo::nt::NetworkManager::getGeoOperator(nt::OpId opId) { + std::cout << "gop size middle getter: " << gopStore_.size() <<"\n"; // <- size 0 if(opId>gopStore_.size()) { throw std::out_of_range("OpId: " + std::to_string(opId) + " > max opId: " + std::to_string(maxOpId_) + "\n"); @@ -51,6 +52,7 @@ bool enzo::nt::NetworkManager::isValidOp(nt::OpId opId) void enzo::nt::NetworkManager::setDisplayOp(OpId opId) { + std::cout << "gop size before: " << gopStore_.size() <<"\n"; displayOp_=opId; std::vector dependencyGraph = getDependencyGraph(opId); enzo::geo::Geometry prevGeometry; @@ -60,8 +62,10 @@ void enzo::nt::NetworkManager::setDisplayOp(OpId opId) { cookOp(dependencyOpId); } + std::cout << "gop size middle: " << gopStore_.size() <<"\n"; // <- size: 1 enzo::nt::GeometryOperator& displayOp = getGeoOperator(opId); - updateDisplay(displayOp.getOutputGeo(0)); + getInstance()->updateDisplay(displayOp.getOutputGeo(0)); + std::cout << "gop size after: " << gopStore_.size() <<"\n"; } void enzo::nt::NetworkManager::cookOp(enzo::nt::OpId opId) diff --git a/src/Engine/Network/NetworkManager.h b/src/Engine/Network/NetworkManager.h index 37608ae..f94fcfb 100644 --- a/src/Engine/Network/NetworkManager.h +++ b/src/Engine/Network/NetworkManager.h @@ -22,7 +22,7 @@ public: static std::optional getDisplayOp(); static bool isValidOp(nt::OpId opId); static GeometryOperator& getGeoOperator(nt::OpId opId); - void setDisplayOp(OpId opId); + static void setDisplayOp(OpId opId); #ifdef UNIT_TEST static void _reset(); diff --git a/src/Engine/Operator/OperatorTable.cpp b/src/Engine/Operator/OperatorTable.cpp index 043663a..86c39a6 100644 --- a/src/Engine/Operator/OperatorTable.cpp +++ b/src/Engine/Operator/OperatorTable.cpp @@ -5,8 +5,12 @@ void enzo::op::OperatorTable::addOperator(nt::opConstructor ctorFunc) { std::cout << "OPERATOR TABLE ADDED\n"; - // ctorFunc(5); ctorStore_.push_back(ctorFunc); } +enzo::nt::opConstructor enzo::op::OperatorTable::getOpConstructor(size_t pos) +{ + return ctorStore_.at(pos); +} + std::vector enzo::op::OperatorTable::ctorStore_; diff --git a/src/Engine/Operator/OperatorTable.h b/src/Engine/Operator/OperatorTable.h index f8fbc5e..95b46dd 100644 --- a/src/Engine/Operator/OperatorTable.h +++ b/src/Engine/Operator/OperatorTable.h @@ -2,6 +2,7 @@ #include #include "Engine/Network/NetworkManager.h" +#include "Engine/Operator/GeometryOpDef.h" namespace enzo::op { @@ -9,6 +10,7 @@ class BOOST_SYMBOL_EXPORT OperatorTable { public: static void addOperator(nt::opConstructor ctorFunc); + static nt::opConstructor getOpConstructor(size_t pos); private: static std::vector ctorStore_; }; diff --git a/src/Gui/Network/Network.cpp b/src/Gui/Network/Network.cpp index 4ffdfcf..3fc772f 100644 --- a/src/Gui/Network/Network.cpp +++ b/src/Gui/Network/Network.cpp @@ -1,6 +1,7 @@ #include "Gui/Network/Network.h" #include "Engine/Operator/GeometryConnection.h" #include "Engine/Operator/GeometryOperator.h" +#include "Engine/Operator/OperatorTable.h" #include "Engine/Types.h" #include "Gui/Network/DisplayFlagButton.h" #include "Gui/Network/NodeEdgeGraphic.h" @@ -297,7 +298,7 @@ void Network::keyPressEvent(QKeyEvent *event) } case(Qt::Key_F): { - if(auto newNode = createNode(&GOP_transform::ctor)) + if(auto newNode = createNode(op::OperatorTable::getOpConstructor(0))) { newNode->setPos(viewPos); } @@ -383,7 +384,7 @@ void Network::mouseReleaseEvent(QMouseEvent *event) NodeGraphic* prevDisplayNode = nodeStore_.at(*prevDisplayOpId); prevDisplayNode->setDisplayFlag(false); } - nm->setDisplayOp(opId); + enzo::nt::NetworkManager::setDisplayOp(opId); static_cast(clickedDisplayFlag)->setEnabled(true); } if(state_==State::MOVING_NODE) diff --git a/src/Gui/main.cpp b/src/Gui/main.cpp index d451cbf..238df80 100644 --- a/src/Gui/main.cpp +++ b/src/Gui/main.cpp @@ -1,11 +1,14 @@ #include #include #include +#include "Engine/Operator/OperatorTable.h" +#include #include "Interface.h" int main(int argc, char **argv) { + // set up rendering QSurfaceFormat format; format.setRenderableType(QSurfaceFormat::OpenGL); format.setVersion(3, 2); @@ -13,6 +16,14 @@ int main(int argc, char **argv) format.setSamples(4); QSurfaceFormat::setDefaultFormat(format); + // setup table + auto initPlugin = boost::dll::import_symbol( + "build/src/OpDefs/libenzoOps1.so", "newSopOperator" + ); + + initPlugin(enzo::op::OperatorTable::addOperator); + + QApplication app (argc, argv); EnzoUI interface;