PeriDyno 1.0.0
Loading...
Searching...
No Matches
initializeRigidBody.cpp
Go to the documentation of this file.
2
3#include "NodeFactory.h"
4#include "Vehicle.h"
5
6namespace dyno
7{
8 std::atomic<RigidBodyInitializer*> RigidBodyInitializer::gInstance;
10
12 {
13 RigidBodyInitializer* ins = gInstance.load(std::memory_order_acquire);
14 if (!ins) {
15 std::lock_guard<std::mutex> tLock(gMutex);
16 ins = gInstance.load(std::memory_order_relaxed);
17 if (!ins) {
18 ins = new RigidBodyInitializer();
19 ins->setName("Rigid Body");
20 ins->setVersion("1.0");
21 ins->setDescription("A rigid body library");
22
23 gInstance.store(ins, std::memory_order_release);
24 }
25 }
26
27 return ins;
28 }
29
34
36 {
38
39 auto page = factory->addPage(
40 "Rigid Body",
41 "ToolBarIco/RigidBody/RigidBody.png");
42
43 auto group = page->addGroup("Rigid Body");
44
45 group->addAction(
46 "Rigid Body",
47 "ToolBarIco/RigidBody/RigidBody.png",
48 nullptr);
49
50 auto articulated = page->addGroup("ArticulatedBody");
51
52 articulated->addAction(
53 "Jeep",
54 "ToolBarIco/RigidBody/Jeep_45.png",
55 [=]()->std::shared_ptr<Node> {
56 return std::make_shared<Jeep<DataType3f>>();
57 }
58 );
59
60 articulated->addAction(
61 "Tank",
62 "ToolBarIco/RigidBody/Tank_45.png",
63 [=]()->std::shared_ptr<Node> {
64 return std::make_shared<Tank<DataType3f>>();
65 }
66 );
67
68 articulated->addAction(
69 "UAV",
70 "ToolBarIco/RigidBody/UAV_15.png",
71 [=]()->std::shared_ptr<Node> {
72 return std::make_shared<UAV<DataType3f>>();
73 }
74 );
75
76 articulated->addAction(
77 "UUV",
78 "ToolBarIco/RigidBody/UUV_45.png",
79 [=]()->std::shared_ptr<Node> {
80 return std::make_shared<UUV<DataType3f>>();
81 }
82 );
83
84 }
85}
86
88{
89 if (dyno::RigidBodyInitializer::instance()->initialize())
91
92 return nullptr;
93}
94
102
static NodeFactory * instance()
std::shared_ptr< NodePage > addPage(std::string name, std::string icon)
static PluginEntry * instance()
static std::atomic< RigidBodyInitializer * > gInstance
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)
PluginEntry()
void setVersion(std::string pluginVersion)
void setName(std::string pluginName)