diff options
Diffstat (limited to 'libphysics/event.c')
| -rw-r--r-- | libphysics/event.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libphysics/event.c b/libphysics/event.c new file mode 100644 index 0000000..da836f6 --- /dev/null +++ b/libphysics/event.c @@ -0,0 +1,44 @@ +#include <vecmath.h> +#include <physics.h> +#include <stdlib.h> + +#include "dat.h" + +#define EVENT_POOL_SIZE 2048 + +static CollisionEvent event[EVENT_POOL_SIZE]; +static int eventi, evente, events; + +int +phxenqevent(CollisionEvent *ev) +{ + if(events == EVENT_POOL_SIZE) + return 0; + + event[evente] = *ev; + evente = (evente + 1) % EVENT_POOL_SIZE; + events++; + + return 1; +} + +int +phxdeqevent(CollisionEvent *ev) +{ + CollisionEvent *evv; + if(events == 0) + return 0; + + evv = event + eventi; + eventi = (eventi + 1) % EVENT_POOL_SIZE; + + *ev = *evv; + events--; + return 1; +} + +int +phxnextcollevent(CollisionEvent *ev) +{ + return phxdeqevent(ev); +} |
