PeriDyno 1.0.0
Loading...
Searching...
No Matches
initializeSemiAnalyticalScheme.cpp
Go to the documentation of this file.
2
3#include "NodeFactory.h"
4
5#include "ParticleSystem/ParticleSystem.h"
6
9
12#include "SemiAnalyticalPBD.h"
13
14namespace dyno
15{
16 std::atomic<SemiAnalyticalSchemeInitializer*> SemiAnalyticalSchemeInitializer::gInstance;
18
20 {
21 SemiAnalyticalSchemeInitializer* ins = gInstance.load(std::memory_order_acquire);
22 if (!ins) {
23 std::lock_guard<std::mutex> tLock(gMutex);
24 ins = gInstance.load(std::memory_order_relaxed);
25 if (!ins) {
27 ins->setName("SemiAnalyticalScheme");
28 ins->setVersion("1.0");
29 ins->setDescription("A semi-analytical scheme library");
30
31 gInstance.store(ins, std::memory_order_release);
32 }
33 }
34
35 return ins;
36 }
37
39 {
41
42 auto page = factory->addPage(
43 "Particle System",
44 "ToolBarIco/ParticleSystem/ParticleSystem.png");
45
46 auto group = page->addGroup("Semi Analytical Scheme");
47
48 group->addAction(
49 "Semi Analytical SFI",
50 "ToolBarIco/ParticleSystem/SemiAnalvticalSFI_yellow.png",
51 [=]()->std::shared_ptr<Node> { return std::make_shared<SemiAnalyticalSFINode<DataType3f>>(); });
52
53 group->addAction(
54 "Triangular Mesh Boundary",
55 "ToolBarIco/ParticleSystem/SemiAnalvticalSFI.png",
56 [=]()->std::shared_ptr<Node> { return std::make_shared<TriangularMeshBoundary<DataType3f>>(); });
57 }
58
66
74
75}
static NodeFactory * instance()
std::shared_ptr< NodePage > addPage(std::string name, std::string icon)
static std::atomic< SemiAnalyticalSchemeInitializer * > gInstance
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)
void setVersion(std::string pluginVersion)
void setName(std::string pluginName)