PeriDyno 1.0.0
Loading...
Searching...
No Matches
initializeParticleSystem.cpp
Go to the documentation of this file.
2
10
14
16#include "GLPointVisualModule.h"
17
18#include "Module/CalculateNorm.h"
19
20#include "ColorMapping.h"
21
22#include "ParticleFluid.h"
23
24#include "NodeFactory.h"
25
26namespace dyno
27{
28 std::atomic<ParticleSystemInitializer*> ParticleSystemInitializer::gInstance;
30
32 {
33 ParticleSystemInitializer* ins = gInstance.load(std::memory_order_acquire);
34 if (!ins) {
35 std::lock_guard<std::mutex> tLock(gMutex);
36 ins = gInstance.load(std::memory_order_relaxed);
37 if (!ins) {
38 ins = new ParticleSystemInitializer();
39 ins->setName("Particle System");
40 ins->setVersion("1.0");
41 ins->setDescription("A particle system library");
42
43 gInstance.store(ins, std::memory_order_release);
44 }
45 }
46
47 return ins;
48 }
49
54
56 {
58
59 auto page = factory->addPage(
60 "Particle System",
61 "ToolBarIco/ParticleSystem/ParticleSystem.png");
62
63 auto emitters = page->addGroup("Emitters");
64
65 emitters->addAction(
66 "Circular Emitter",
67 "ToolBarIco/ParticleSystem/ParticleEmitterRound.png",
68 [=]()->std::shared_ptr<Node> {
69 auto emitter = std::make_shared<CircularEmitter<DataType3f>>();
70 return emitter;
71 });
72
73 emitters->addAction(
74 "Square Emitter",
75 "ToolBarIco/ParticleSystem/ParticleEmitterSquare.png",
76 [=]()->std::shared_ptr<Node> {
77 auto emitter = std::make_shared<SquareEmitter<DataType3f>>();
78 return emitter;;
79 });
80
81 emitters->addAction(
82 "Poisson Emitter",
83 //"ToolBarIco/ParticleSystem/PoissonEmitter.png",
84 "ToolBarIco/ParticleSystem/ParticleEmitterSquare.png",
85 [=]()->std::shared_ptr<Node> {
86 auto emitter = std::make_shared<PoissonEmitter<DataType3f>>();
87 return emitter;
88 });
89
90 auto solvers = page->addGroup("Particle Fluid Solvers");
91
92 solvers->addAction(
93 "Particle Fluid",
94 "ToolBarIco/ParticleSystem/ParticleFluid.png",
95 [=]()->std::shared_ptr<Node> {
96 auto fluid = std::make_shared<ParticleFluid<DataType3f>>();
97 return fluid;
98 });
99 }
100}
101
103{
106
107 return nullptr;
108}
109
static NodeFactory * instance()
std::shared_ptr< NodePage > addPage(std::string name, std::string icon)
static std::atomic< ParticleSystemInitializer * > gInstance
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)