PeriDyno 1.0.0
Loading...
Searching...
No Matches
initializeHeightField.cpp
Go to the documentation of this file.
2
3#include "Ocean.h"
4#include "CapillaryWave.h"
5#include "LargeOcean.h"
6#include "OceanPatch.h"
7
8#include "Vessel.h"
9
12
13#include "NodeFactory.h"
14
15namespace dyno
16{
17 std::atomic<HeightFieldInitializer*> HeightFieldInitializer::gInstance;
19
23
25 {
26 HeightFieldInitializer* ins = gInstance.load(std::memory_order_acquire);
27 if (!ins) {
28 std::lock_guard<std::mutex> tLock(gMutex);
29 ins = gInstance.load(std::memory_order_relaxed);
30 if (!ins) {
31 ins = new HeightFieldInitializer();
32 ins->setName("Height Field");
33 ins->setVersion("1.0");
34 ins->setDescription("A height field library");
35
36 gInstance.store(ins, std::memory_order_release);
37 }
38 }
39
40 return ins;
41 }
42
44 {
46
47 auto page = factory->addPage(
48 "Ocean",
49 "ToolBarIco/HeightField/HeightField.png");
50
51 auto group = page->addGroup("Ocean");
52
53 group->addAction(
54 "Ocean Patch",
55 "ToolBarIco/HeightField/OceanPatch.png",
56 [=]()->std::shared_ptr<Node> {
57 auto patch = std::make_shared<OceanPatch<DataType3f>>();
58
59 return patch;
60 });
61
62 group->addAction(
63 "Ocean",
64 "ToolBarIco/HeightField/Ocean.png",
65 [=]()->std::shared_ptr<Node> {
66 auto ocean = std::make_shared<Ocean<DataType3f>>();
67 ocean->varExtentX()->setValue(2);
68 ocean->varExtentZ()->setValue(2);
69
70 return ocean;
71 });
72
73 group->addAction(
74 "LargeOcean",
75 "ToolBarIco/HeightField/Wave.png",
76 [=]()->std::shared_ptr<Node> {
77 auto ocean = std::make_shared<LargeOcean<DataType3f>>();
78
79 return ocean;
80 });
81
82 group->addAction(
83 "CapillaryWave",
84 "ToolBarIco/HeightField/CapillaryWave.png",
85 [=]()->std::shared_ptr<Node> { return std::make_shared<CapillaryWave<DataType3f>>(); });
86
87 auto page2 = factory->addPage(
88 "Rigid Body",
89 "ToolBarIco/RigidBody/RigidBody.png");
90
91 auto group2 = page2->addGroup("ArticulatedBody");
92
93 group2->addAction(
94 "Boat",
95 "ToolBarIco/RigidBody/Boat_45.png",
96 [=]()->std::shared_ptr<Node> {
97 auto vessel = std::make_shared<Vessel<DataType3f>>();
98 return vessel;
99 });
100 }
101
102}
103
111
113{
114 if (dyno::HeightFieldInitializer::instance()->initialize())
116
117 return nullptr;
118}
static std::atomic< HeightFieldInitializer * > gInstance
static NodeFactory * instance()
std::shared_ptr< NodePage > addPage(std::string name, std::string icon)
PERIDYNO_API dyno::PluginEntry * initDynoPlugin()
dyno::PluginEntry * initStaticPlugin()
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)