annotate trunk/chipmunkd/cpSpaceComponent.d @ 15:df4ebc8add66

rename/refactoring
author Extrawurst
date Sat, 04 Dec 2010 00:51:29 +0100
parents 7ebbd4d05553
children 4ceef5833c8c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
1
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
2 // written in the D programming language
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
3
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
4 module chipmunkd.cpSpaceComponent;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
5
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
6 import chipmunkd.chipmunk;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
7
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
8 // Chipmunk uses a data structure called a disjoint set forest.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
9 // My attempts to find a way to splice circularly linked lists in
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
10 // constant time failed, and so I found this neat data structure instead.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
11
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
12 static cpBody *
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
13 componentNodeRoot(cpBody *_body)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
14 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
15 cpBody *parent = _body.node.parent;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
16
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
17 if(parent){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
18 // path compression, attaches this node directly to the root
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
19 return (_body.node.parent = componentNodeRoot(parent));
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
20 } else {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
21 return _body;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
22 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
23 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
24
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
25 static void
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
26 componentNodeMerge(cpBody *a_root, cpBody *b_root)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
27 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
28 if(a_root.node.rank < b_root.node.rank){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
29 a_root.node.parent = b_root;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
30 } else if(a_root.node.rank > b_root.node.rank){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
31 b_root.node.parent = a_root;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
32 } else if(a_root != b_root){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
33 b_root.node.parent = a_root;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
34 a_root.node.rank++;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
35 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
36 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
37
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
38 static void
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
39 componentActivate(cpBody *root)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
40 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
41 if(!cpBodyIsSleeping(root)) return;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
42
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
43 cpSpace *space = root.space;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
44 assert(space, "Trying to activate a body that was never added to a space.");
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
45
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
46 cpBody* _body = root;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
47 cpBody* next;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
48 do {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
49 next = _body.node.next;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
50
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
51 cpComponentNode node = {null, null, 0, 0.0f};
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
52 _body.node = node;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
53 cpArrayPush(space.bodies, _body);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
54
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
55 for(cpShape *shape=_body.shapesList; shape; shape=shape.next){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
56 cpSpaceHashRemove(space.staticShapes, shape, shape.hashid);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
57 cpSpaceHashInsert(space.activeShapes, shape, shape.hashid, shape.bb);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
58 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
59 } while((_body = next) != root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
60
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
61 cpArrayDeleteObj(space.sleepingComponents, root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
62 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
63
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
64 void
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
65 cpBodyActivate(cpBody *_body)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
66 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
67 // Reset the idle time even if it's not in a currently sleeping component
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
68 // Like a body resting on or jointed to a rogue body.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
69 _body.node.idleTime = 0.0f;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
70 componentActivate(componentNodeRoot(_body));
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
71 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
72
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
73 static void
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
74 mergeBodies(cpSpace *space, cpArray *components, cpArray *rogueBodies, cpBody *a, cpBody *b)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
75 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
76 // Don't merge with the static body
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
77 if(cpBodyIsStatic(a) || cpBodyIsStatic(b)) return;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
78
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
79 cpBody *a_root = componentNodeRoot(a);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
80 cpBody *b_root = componentNodeRoot(b);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
81
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
82 cpBool a_sleep = cpBodyIsSleeping(a_root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
83 cpBool b_sleep = cpBodyIsSleeping(b_root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
84
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
85 if(a_sleep && b_sleep){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
86 return;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
87 } else if(a_sleep || b_sleep){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
88 componentActivate(a_root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
89 componentActivate(b_root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
90 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
91
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
92 // Add any rogue bodies (bodies not added to the space)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
93 if(!a.space) cpArrayPush(rogueBodies, a);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
94 if(!b.space) cpArrayPush(rogueBodies, b);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
95
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
96 componentNodeMerge(a_root, b_root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
97 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
98
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
99 static cpBool
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
100 componentActive(cpBody *root, cpFloat threshold)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
101 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
102 cpBody *_body = root;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
103 cpBody *next;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
104 do {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
105 next = _body.node.next;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
106 if(cpBodyIsRogue(_body) || _body.node.idleTime < threshold) return cpTrue;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
107 } while((_body = next) != root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
108
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
109 return cpFalse;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
110 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
111
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
112 static void
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
113 addToComponent(cpBody *_body, cpArray *components)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
114 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
115 // Check that the body is not already added to the component list
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
116 if(_body.node.next) return;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
117 cpBody *root = componentNodeRoot(_body);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
118
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
119 cpBody *next = root.node.next;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
120 if(!next){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
121 // If the root isn't part of a list yet, then it hasn't been
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
122 // added to the components list. Do that now.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
123 cpArrayPush(components, root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
124 // Start the list
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
125 _body.node.next = root;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
126 root.node.next = _body;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
127 } else if(root != _body) {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
128 // Splice in body after the root.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
129 _body.node.next = next;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
130 root.node.next = _body;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
131 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
132 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
133
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
134 // TODO this function needs more commenting.
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
135 void
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
136 cpSpaceProcessComponents(cpSpace *space, cpFloat dt)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
137 {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
138 cpArray *bodies = space.bodies;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
139 cpArray *newBodies = cpArrayNew(bodies.num);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
140 cpArray *rogueBodies = cpArrayNew(16);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
141 cpArray *arbiters = space.arbiters;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
142 cpArray *constraints = space.constraints;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
143 cpArray *components = cpArrayNew(bodies.num/8);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
144
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
145 cpFloat dv = space.idleSpeedThreshold;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
146 cpFloat dvsq = (dv ? dv*dv : cpvdot(space.gravity, space.gravity)*dt*dt);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
147 // update idling
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
148 for(int i=0; i<bodies.num; i++){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
149 cpBody *_body = cast(cpBody*)bodies.arr[i];
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
150
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
151 cpFloat thresh = (dvsq ? _body.m*dvsq : 0.0f);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
152 _body.node.idleTime = (cpBodyKineticEnergy(_body) > thresh ? 0.0f : _body.node.idleTime + dt);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
153 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
154
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
155 // iterate graph edges and build forests
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
156 for(int i=0; i<arbiters.num; i++){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
157 cpArbiter *arb = cast(cpArbiter*)arbiters.arr[i];
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
158 mergeBodies(space, components, rogueBodies, arb.private_a._body, arb.private_b._body);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
159 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
160 for(int j=0; j<constraints.num; j++){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
161 cpConstraint *constraint = cast(cpConstraint *)constraints.arr[j];
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
162 mergeBodies(space, components, rogueBodies, constraint.a, constraint.b);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
163 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
164
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
165 // iterate bodies and add them to their components
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
166 for(int i=0; i<bodies.num; i++)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
167 addToComponent(cast(cpBody*)bodies.arr[i], components);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
168 for(int i=0; i<rogueBodies.num; i++)
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
169 addToComponent(cast(cpBody*)rogueBodies.arr[i], components);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
170
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
171 // iterate components, copy or deactivate
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
172 for(int i=0; i<components.num; i++){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
173 cpBody *root = cast(cpBody*)components.arr[i];
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
174 if(componentActive(root, space.sleepTimeThreshold)){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
175 cpBody *_body = root;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
176 cpBody *next;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
177 do {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
178 next = _body.node.next;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
179
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
180 if(!cpBodyIsRogue(_body)) cpArrayPush(newBodies, _body);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
181 _body.node.next = null;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
182 _body.node.parent = null;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
183 _body.node.rank = 0;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
184 } while((_body = next) != root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
185 } else {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
186 cpBody *_body = root;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
187 cpBody *next;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
188 do {
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
189 next = _body.node.next;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
190
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
191 for(cpShape *shape = _body.shapesList; shape; shape = shape.next){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
192 cpSpaceHashRemove(space.activeShapes, shape, shape.hashid);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
193 cpSpaceHashInsert(space.staticShapes, shape, shape.hashid, shape.bb);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
194 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
195 } while((_body = next) != root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
196
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
197 cpArrayPush(space.sleepingComponents, root);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
198 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
199 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
200
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
201 space.bodies = newBodies;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
202 cpArrayFree(bodies);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
203 cpArrayFree(rogueBodies);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
204 cpArrayFree(components);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
205 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
206
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
207 void
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
208 cpSpaceSleepBody(cpSpace *space, cpBody *_body){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
209 cpComponentNode node = {null, _body, 0, 0.0f};
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
210 _body.node = node;
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
211
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
212 for(cpShape *shape = _body.shapesList; shape; shape = shape.next){
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
213 cpSpaceHashRemove(space.activeShapes, shape, shape.hashid);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
214
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
215 cpShapeCacheBB(shape);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
216 cpSpaceHashInsert(space.staticShapes, shape, shape.hashid, shape.bb);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
217 }
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
218
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
219 cpArrayPush(space.sleepingComponents, _body);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
220 cpArrayDeleteObj(space.bodies, _body);
7ebbd4d05553 initial commit
Extrawurst
parents:
diff changeset
221 }