PeriDyno 1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
initializeModeling.cpp
Go to the documentation of this file.
2
3#include "NodeFactory.h"
4
11
12#include "Commands/Turning.h"
13#include "Commands/Merge.h"
14#include "Commands/Turning.h"
15
17
18#include "StaticMeshLoader.h"
19
22
24
25namespace dyno
26{
27 std::atomic<ModelingInitializer*> ModelingInitializer::gInstance;
29
31 {
32 ModelingInitializer* ins = gInstance.load(std::memory_order_acquire);
33 if (!ins) {
34 std::lock_guard<std::mutex> tLock(gMutex);
35 ins = gInstance.load(std::memory_order_relaxed);
36 if (!ins) {
37 ins = new ModelingInitializer();
38 ins->setName("Modeling");
39 ins->setVersion("1.0");
40 ins->setDescription("A modeling library");
41
42 gInstance.store(ins, std::memory_order_release);
43 }
44 }
45
46 return ins;
47 }
48
50 {
52
53 auto page = factory->addPage(
54 "Modeling",
55 "ToolBarIco/Modeling/Modeling.png");
56
57 auto basic = page->addGroup("Basic");
58
59 basic->addAction(
60 "Plane",
61 "ToolBarIco/Modeling/Plane.png",
62 [=]()->std::shared_ptr<Node> {
63 return std::make_shared<PlaneModel<DataType3f>>();
64 });
65
66 basic->addAction(
67 "Cube",
68 "ToolBarIco/Modeling/Cube.png",
69 [=]()->std::shared_ptr<Node> {
70 return std::make_shared<CubeModel<DataType3f>>();
71 });
72
73 basic->addAction(
74 "Sphere",
75 "ToolBarIco/Modeling/Sphere.png",
76 [=]()->std::shared_ptr<Node> {
77 return std::make_shared<SphereModel<DataType3f>>();
78 });
79
80 basic->addAction(
81 "Cylinder",
82 "ToolBarIco/Modeling/Cylinder.png",
83 [=]()->std::shared_ptr<Node> {
84 return std::make_shared<CylinderModel<DataType3f>>();
85 });
86 basic->addAction(
87 "Cone",
88 "ToolBarIco/Modeling/Cone.png",
89 [=]()->std::shared_ptr<Node> {
90 return std::make_shared<ConeModel<DataType3f>>();
91 });
92
93 basic->addAction(
94 "Capsule",
95 "ToolBarIco/Modeling/Capsule.png",
96 [=]()->std::shared_ptr<Node> {
97 return std::make_shared<CapsuleModel<DataType3f>>();
98 });
99
100 auto op = page->addGroup("Operation");
101
102 op->addAction(
103 "Turning Model",
104 "ToolBarIco/Modeling/Turn.png",
105 [=]()->std::shared_ptr<Node> {
106 return std::make_shared<TurningModel<DataType3f>>();
107 });
108
109
110 op->addAction(
111 "Merge",
112 "ToolBarIco/Modeling/CubeCombo.png",
113 [=]()->std::shared_ptr<Node> {
114 return std::make_shared<MergeTriangleSet<DataType3f>>();
115 });
116
117 auto samplers = page->addGroup("Samplers");
118
119// samplers->addAction(
120// "Sphere Sampler",
121// "ToolBarIco/Modeling/SphereSampler_v3.png",
122// [=]()->std::shared_ptr<Node> {
123// return std::make_shared<Shape<DataType3f>>();
124// });
125
126 samplers->addAction(
127 "Sampler",
128 "ToolBarIco/Modeling/CubeSampler.png",
129 [=]()->std::shared_ptr<Node> {
130 return std::make_shared<ShapeSampler<DataType3f>>();
131 });
132 }
133}
134
136{
137 if (dyno::ModelingInitializer::instance()->initialize())
139
140 return nullptr;
141}
142
144{
145 if (dyno::ModelingInitializer::instance()->initialize())
147
148 return nullptr;
149}
static PluginEntry * instance()
static std::atomic< ModelingInitializer * > gInstance
static NodeFactory * instance()
std::shared_ptr< NodePage > addPage(std::string name, std::string icon)
dyno::PluginEntry * initStaticPlugin()
PERIDYNO_API dyno::PluginEntry * initDynoPlugin()
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
Definition PluginEntry.h:14
void setDescription(std::string desc)
PluginEntry()
void setVersion(std::string pluginVersion)
void setName(std::string pluginName)