From fda612360aae6a3df9ff3bfb419d05b3c56503ee Mon Sep 17 00:00:00 2001 From: epoch Date: Tue, 5 Feb 2019 22:05:47 -0600 Subject: added physics.c --- src/physics.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/physics.c (limited to 'src') diff --git a/src/physics.c b/src/physics.c new file mode 100644 index 0000000..a414244 --- /dev/null +++ b/src/physics.c @@ -0,0 +1,33 @@ +#include "common.h" + +extern struct global global; +extern struct gra_global gra_global; + +#define MINIMUM_Y 10 +#define GRAVITY 9.8 + +//collision detection and gravity +//I need to get a sphere of each object then compare distances and radii. +//maye let each object have a collision box type. either rectangular prism or sphere. +//sphere would be fine for players. + +/// VELOCITIES: +/* +foward/backward, left/right, up/down, x, y, z +rotation-relative-x,rry,rrz +*/ +int apply_physics() { + int i; + //we can just assume things will float if they don't have a group_rot + for(i=0;global.group_rot[i] && i < MAXSHAPES;i++) {//this should be applied to group_rots + if(!strcmp(global.group_rot[i]->id,global.user)) {//only apply gravity to the camera. + global.group_rot[i]->v.y += (GRAVITY / (float)(global.lps?global.lps:1)); //heh. "fps" needs a headless equivalent now. + global.group_rot[i]->p.y -= global.group_rot[i]->v.y; + if(global.group_rot[i]->p.y < MINIMUM_Y) {//we've moved so we need to output a move command? + global.group_rot[i]->v.y=0; + global.group_rot[i]->p.y=MINIMUM_Y; + } + } + } + return 1; +} -- cgit v1.2.3