blob: a41424424a5f92ae841e9adbed97267c9d5237df (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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;
}
|