Enzo
Loading...
Searching...
No Matches
NetworkManager.h
1#pragma once
2#include "Engine/Operator/GeometryOperator.h"
3#include "Engine/Operator/Geometry.h"
4#include "Engine/Types.h"
5#include <memory>
6#include <unordered_map>
7#include <QObject>
8
9namespace enzo::nt {
11: public QObject
12{
13 Q_OBJECT
14public:
15 // delete copy constructor
16 NetworkManager(const NetworkManager& obj) = delete;
17
18 static NetworkManager& getInstance();
19
20 // functions
21 OpId addOperator(nt::opConstructor ctorFunc);
22 std::optional<OpId> getDisplayOp();
23 bool isValidOp(nt::OpId opId);
24 GeometryOperator& getGeoOperator(nt::OpId opId);
25 void setDisplayOp(OpId opId);
26
27 #ifdef UNIT_TEST
28 void _reset();
29 #endif
30
31private:
32 NetworkManager() {};
33
34 // functions
35 void cookOp(enzo::nt::OpId opId);
36 std::vector<enzo::nt::OpId> getDependencyGraph(enzo::nt::OpId opId);
37
38 // variables
39 // store for geometry operators
40 std::unordered_map<enzo::nt::OpId, std::unique_ptr<enzo::nt::GeometryOperator>> gopStore_;
41 // the highest operator id currently stored
42 enzo::nt::OpId maxOpId_=0;
43 // operator selected for displaying in the viewport
44 std::optional<OpId> displayOp_=std::nullopt;
45signals:
46 void updateDisplay(enzo::geo::Geometry& geometry);
47
48};
49
50inline enzo::nt::NetworkManager& nm() {
51 return enzo::nt::NetworkManager::getInstance();
52}
53}
Definition Geometry.h:9
Definition GeometryOperator.h:12
Definition NetworkManager.h:12