From df8e49f5019b6f33a30d4c9372a18d8d372d6af2 Mon Sep 17 00:00:00 2001 From: esquizo Date: Sun, 17 May 2026 16:48:20 -0300 Subject: libphysics: mudada a interface publica para um id ao invés de um ponteiro MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Isso aumenta a portabilidade e facilita appendage de userdata sem necessariamente alterar o sistema principal --- libphysics/body.c | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) (limited to 'libphysics/body.c') 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; } -- cgit v1.2.3