comparison trunk/chipmunkd/cpBody.d @ 23:4ceef5833c8c

updated to chipmunk 5.3.3
author Extrawurst
date Fri, 10 Dec 2010 02:10:27 +0100
parents df4ebc8add66
children 4541ca17975b
comparison
equal deleted inserted replaced
22:ed2c81f3d1df 23:4ceef5833c8c
99 cpBodyIsSleeping(const cpBody *_body) 99 cpBodyIsSleeping(const cpBody *_body)
100 { 100 {
101 return (_body.node.next !is null); 101 return (_body.node.next !is null);
102 } 102 }
103 103
104 //cpBool cpBodyIsStatic(const cpBody *body); 104 static cpBool
105 cpBodyIsStatic(const cpBody *_body)
106 {
107 return _body.node.idleTime == INFINITY;
108 }
105 109
106 static cpBool 110 static cpBool
107 cpBodyIsRogue(const cpBody* _body) 111 cpBodyIsRogue(const cpBody* _body)
108 { 112 {
109 return (_body.space is null); 113 return (_body.space is null);
264 cpBodyNew(cpFloat m, cpFloat i) 268 cpBodyNew(cpFloat m, cpFloat i)
265 { 269 {
266 return cpBodyInit(cpBodyAlloc(), m, i); 270 return cpBodyInit(cpBodyAlloc(), m, i);
267 } 271 }
268 272
273 cpBody *
274 cpBodyInitStatic(cpBody *_body)
275 {
276 cpBodyInit(_body, cast(cpFloat)INFINITY, cast(cpFloat)INFINITY);
277 _body.node.idleTime = cast(cpFloat)INFINITY;
278
279 return _body;
280 }
281
282 cpBody *
283 cpBodyNewStatic()
284 {
285 return cpBodyInitStatic(cpBodyAlloc());
286 }
287
269 void cpBodyDestroy(cpBody *_body){} 288 void cpBodyDestroy(cpBody *_body){}
270 289
271 void 290 void
272 cpBodyFree(cpBody *_body) 291 cpBodyFree(cpBody *_body)
273 { 292 {
365 // Apply! 384 // Apply!
366 cpVect f = cpvmult(n, f_spring + f_damp); 385 cpVect f = cpvmult(n, f_spring + f_damp);
367 cpBodyApplyForce(a, f, r1); 386 cpBodyApplyForce(a, f, r1);
368 cpBodyApplyForce(b, cpvneg(f), r2); 387 cpBodyApplyForce(b, cpvneg(f), r2);
369 } 388 }
370
371 cpBool
372 cpBodyIsStatic(/+const+/ cpBody *_body)
373 {
374 cpSpace *space = _body.space;
375 return ( (space !is null) && (_body is &space.staticBody) );
376 }
377
378 //void cpSpaceSleepBody(cpSpace *space, cpBody *_body);
379
380 void
381 cpBodySleep(cpBody *_body)
382 {
383 if(cpBodyIsSleeping(_body)) return;
384
385 assert(!cpBodyIsStatic(_body) && !cpBodyIsRogue(_body), "Rogue and static bodies cannot be put to sleep.");
386 cpSpaceSleepBody(_body.space, _body);
387 }