PeriDyno 1.0.0
Loading...
Searching...
No Matches
Object.cpp
Go to the documentation of this file.
1#include <map>
2#include "Object.h"
3
4namespace dyno
5{
6static std::map< std::string, ClassInfo*> *classInfoMap = NULL;
7
9
10#define BASE_ID 0
11
12std::atomic_uint32_t Object::cId {BASE_ID + 1};
13
18
20{
21 if (!classInfoMap) {
22 classInfoMap = new std::map< std::string, ClassInfo*>();
23 }
24 if (ci) {
25 if (classInfoMap->find(ci->m_className) == classInfoMap->end()) {
26 classInfoMap->insert(std::map< std::string, ClassInfo*>::value_type(ci->m_className, ci));
27 // fprintf(stderr,"%s\n", ci->m_className.c_str());
28 }
29 }
30 return true;
31}
32Object* Object::createObject(std::string name)
33{
34 std::map< std::string, ClassInfo*>::const_iterator iter = classInfoMap->find(name);
35 if (classInfoMap->end() != iter) {
36 return iter->second->createObject();
37 }
38 return NULL;
39}
40
41std::map< std::string, ClassInfo*>* Object::getClassMap()
42{
43 return classInfoMap;
44}
45
47{
48 return BASE_ID;
49}
50
52{
53 return cId++;
54}
55
57{
58 return Object::registerClass(ci);
59}
60}
#define BASE_ID
Definition Object.cpp:10
#define IMPLEMENT_CLASS(name)
Definition Object.h:79
std::string m_className
Definition Object.h:61
static std::map< std::string, ClassInfo * > * getClassMap()
Definition Object.cpp:41
static ObjectId baseId()
Base Id.
Definition Object.cpp:46
static Object * createObject(std::string name)
Definition Object.cpp:32
static bool registerClass(ClassInfo *ci)
Definition Object.cpp:19
static uint32_t generateObjectId()
Definition Object.cpp:51
static std::atomic_uint32_t cId
Definition Object.h:134
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
bool Register(ClassInfo *ci)
Definition Object.cpp:56
uint32_t ObjectId
Definition Object.h:110
static std::map< std::string, ClassInfo * > * classInfoMap
Definition Object.cpp:6