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