PeriDyno 1.0.0
Loading...
Searching...
No Matches
initializeVolume.cpp
Go to the documentation of this file.
1#include "initializeVolume.h"
2
3#include "NodeFactory.h"
4
5#include "VolumeGenerator.h"
6#include "VolumeBoolean.h"
7#include "MarchingCubes.h"
8
9namespace dyno
10{
11 std::atomic<VolumeInitializer*> VolumeInitializer::gInstance;
13
15 {
16 VolumeInitializer* ins = gInstance.load(std::memory_order_acquire);
17 if (!ins) {
18 std::lock_guard<std::mutex> tLock(gMutex);
19 ins = gInstance.load(std::memory_order_relaxed);
20 if (!ins) {
21 ins = new VolumeInitializer();
22 ins->setName("Particle System");
23 ins->setVersion("1.0");
24 ins->setDescription("A particle system library");
25
26 gInstance.store(ins, std::memory_order_release);
27 }
28 }
29
30 return ins;
31 }
32
37
39 {
41
42 auto page = factory->addPage(
43 "Volume",
44 "ToolBarIco/Volume/GenerateSparseVolume.png");
45
46 auto group = page->addGroup("Volume");
47
48 group->addAction(
49 "Volume",
50 "ToolBarIco/Volume/volume_v3.png",
51 [=]()->std::shared_ptr<Node> {
52 auto node = std::make_shared<VolumeGenerator<DataType3f>>();
53
54 return node;
55 });
56
57 group->addAction(
58 "VolumeBoolean",
59 "ToolBarIco/Volume/Intersect_v5.png",
60 [=]()->std::shared_ptr<Node> {
61 auto node = std::make_shared<VolumeBoolean<DataType3f>>();
62
63 return node;
64 });
65
66 group->addAction(
67 "MarchingCubes",
68 "ToolBarIco/Volume/GenerateUniformVolume.png",
69 [=]()->std::shared_ptr<Node> {
70 auto node = std::make_shared<MarchingCubes<DataType3f>>();
71
72 return node; }
73 );
74 }
75}
76
78{
79 if (dyno::VolumeInitializer::instance()->initialize())
81
82 return nullptr;
83}
84
86{
87 if (dyno::VolumeInitializer::instance()->initialize())
89
90 return nullptr;
91}
static NodeFactory * instance()
std::shared_ptr< NodePage > addPage(std::string name, std::string icon)
void initializeActions() override
static std::mutex gMutex
static std::atomic< VolumeInitializer * > gInstance
static PluginEntry * instance()
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)