| 105 | } |
| 106 | |
| 107 | b2Body* b2World::CreateBody(const b2BodyDef* def) |
| 108 | { |
| 109 | b2Assert(IsLocked() == false); |
| 110 | if (IsLocked()) |
| 111 | { |
| 112 | return NULL; |
| 113 | } |
| 114 | |
| 115 | void* mem = m_blockAllocator.Allocate(sizeof(b2Body)); |
| 116 | b2Body* b = new (mem) b2Body(def, this); |
| 117 | |
| 118 | // Add to world doubly linked list. |
| 119 | b->m_prev = NULL; |
| 120 | b->m_next = m_bodyList; |
| 121 | if (m_bodyList) |
| 122 | { |
| 123 | m_bodyList->m_prev = b; |
| 124 | } |
| 125 | m_bodyList = b; |
| 126 | ++m_bodyCount; |
| 127 | |
| 128 | return b; |
| 129 | } |
| 130 | |
| 131 | void b2World::DestroyBody(b2Body* b) |
| 132 | { |
no test coverage detected