summaryrefslogtreecommitdiff
path: root/src/physics.c
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;
}