diff options
Diffstat (limited to 'libphysics/body.c')
| -rw-r--r-- | libphysics/body.c | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/libphysics/body.c b/libphysics/body.c index 4ea05bd..51a352d 100644 --- a/libphysics/body.c +++ b/libphysics/body.c @@ -9,59 +9,57 @@ Body phxbodypool[POOL_SIZE]; int phxbodypoolsize; -static Body *allocbody(void); +static BodyID allocbody(void); -Body * +BodyID phxnew(BodyType type) { - Body *b; + BodyID b; - if((b = allocbody()) == NULL) + if((b = allocbody()) == -1) return b; - b->type = type; + phxbodypool[b].type = type; return b; } void -phxdel(Body *b) +phxdel(BodyID id) { - b->active = 0; + phxbodypool[id].active = 0; } void -phxsetpos(Body *b, float x, float y) +phxsetpos(BodyID b, float x, float y) { - b->pos[0] = x; - b->pos[1] = y; + vec2_dup(phxbodypool[b].pos, (vec2){ x, y }); } void -phxsetsize(Body *b, float w, float h) +phxsetsize(BodyID b, float w, float h) { - b->size[0] = w; - b->size[1] = h; + vec2_dup(phxbodypool[b].size, (vec2){ w, h }); } void -phxgetpos(Body *b, float p[2]) +phxgetpos(BodyID b, float p[2]) { - vec2_dup(p, b->pos); + vec2_dup(p, phxbodypool[b].pos); } void -phxgetsize(Body *b, float p[2]) +phxgetsize(BodyID b, float p[2]) { - vec2_dup(p, b->size); + vec2_dup(p, phxbodypool[b].size); } void -phxapplyaccel(Body *b, float a[2]) +phxapplyaccel(BodyID b, float a[2]) { - vec2_add(b->accel, b->accel, a); + vec2_add(phxbodypool[b].accel, phxbodypool[b].accel, a); } -Body * +BodyID allocbody(void) { int i; @@ -72,10 +70,10 @@ allocbody(void) if(i >= phxbodypoolsize) { if(phxbodypoolsize == POOL_SIZE) - return NULL; + return -1; i = phxbodypoolsize++; } phxbodypool[i].active = 1; - return phxbodypool + i; + return i; } |
