summaryrefslogtreecommitdiff
path: root/libphysics/body.c
diff options
context:
space:
mode:
Diffstat (limited to 'libphysics/body.c')
-rw-r--r--libphysics/body.c42
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;
}