PeriDyno 1.0.0
Loading...
Searching...
No Matches
NodeFactory.h
Go to the documentation of this file.
1
16#pragma once
17#include <atomic>
18#include <mutex>
19
20#include <map>
21#include <unordered_map>
22
23#include "SceneGraph.h"
24
25namespace dyno
26{
28 {
29 public:
30 NodeAction(std::string caption, std::string icon, std::function<std::shared_ptr<Node>()> func = nullptr) {
32 mIcon = icon;
33
34 mCallback = func;
35 }
36
37 std::string icon() { return mIcon; }
38 std::string caption() { return mCaption; }
39
40 std::function<std::shared_ptr<Node>()> action() { return mCallback; }
41
42 private:
43 std::string mCaption;
44 std::string mIcon;
45
46 std::function<std::shared_ptr<Node>()> mCallback;
47 };
48
50 {
51 public:
52 NodeGroup(std::string caption) {
54 }
55
56 void addAction(std::shared_ptr<NodeAction> nAct);
57 void addAction(std::string caption, std::string icon, std::function<std::shared_ptr<Node>()> act);
58
59 std::vector<std::shared_ptr<NodeAction>>& actions() {
60 return mActions;
61 }
62
63 std::string caption() { return mCaption; }
64
65 private:
66 std::string mCaption;
67
68 std::vector<std::shared_ptr<NodeAction>> mActions;
69 };
70
72 {
73 public:
74 NodePage(std::string caption, std::string icon) {
76 mIcon = icon;
77 }
78
79 std::shared_ptr<NodeGroup> addGroup(std::string name);
80
81 bool hasGroup(std::string name);
82
83 std::map<std::string, std::shared_ptr<NodeGroup>>& groups() {
84 return mGroups;
85 }
86
87 std::string icon() { return mIcon; }
88 std::string caption() { return mCaption; }
89
90 private:
91 std::string mCaption;
92 std::string mIcon;
93
94 std::map<std::string, std::shared_ptr<NodeGroup>> mGroups;
95 };
96
98 {
99 public:
100 static NodeFactory* instance();
101
102 std::shared_ptr<NodePage> addPage(std::string name, std::string icon);
103
104 bool hasPage(std::string name);
105
106 std::map<std::string, std::shared_ptr<NodePage>>& nodePages() {
107 return mPages;
108 }
109
110 private:
111 NodeFactory() = default;
112 ~NodeFactory() = default;
113 NodeFactory(const NodeFactory&) = delete;
115
116 private:
117 static std::atomic<NodeFactory*> pInstance;
118 static std::mutex mMutex;
119
120 std::map<std::string, std::shared_ptr<NodePage>> mPages;
121 };
122
123}
std::string caption()
Definition NodeFactory.h:38
std::string mCaption
Definition NodeFactory.h:43
std::string icon()
Definition NodeFactory.h:37
std::string mIcon
Definition NodeFactory.h:44
std::function< std::shared_ptr< Node >()> mCallback
Definition NodeFactory.h:46
std::function< std::shared_ptr< Node >()> action()
Definition NodeFactory.h:40
NodeAction(std::string caption, std::string icon, std::function< std::shared_ptr< Node >()> func=nullptr)
Definition NodeFactory.h:30
NodeFactory()=default
static NodeFactory * instance()
std::map< std::string, std::shared_ptr< NodePage > > & nodePages()
static std::atomic< NodeFactory * > pInstance
std::shared_ptr< NodePage > addPage(std::string name, std::string icon)
~NodeFactory()=default
bool hasPage(std::string name)
static std::mutex mMutex
std::map< std::string, std::shared_ptr< NodePage > > mPages
NodeFactory & operator=(const NodeFactory &)=delete
NodeFactory(const NodeFactory &)=delete
std::vector< std::shared_ptr< NodeAction > > & actions()
Definition NodeFactory.h:59
std::vector< std::shared_ptr< NodeAction > > mActions
Definition NodeFactory.h:68
std::string caption()
Definition NodeFactory.h:63
void addAction(std::shared_ptr< NodeAction > nAct)
NodeGroup(std::string caption)
Definition NodeFactory.h:52
std::string mCaption
Definition NodeFactory.h:66
std::string icon()
Definition NodeFactory.h:87
std::string mCaption
Definition NodeFactory.h:91
std::map< std::string, std::shared_ptr< NodeGroup > > mGroups
Definition NodeFactory.h:94
bool hasGroup(std::string name)
NodePage(std::string caption, std::string icon)
Definition NodeFactory.h:74
std::shared_ptr< NodeGroup > addGroup(std::string name)
std::map< std::string, std::shared_ptr< NodeGroup > > & groups()
Definition NodeFactory.h:83
std::string caption()
Definition NodeFactory.h:88
std::string mIcon
Definition NodeFactory.h:92
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25