12 object *
newgrid(scenedef * scene,
int xsize,
int ysize,
int zsize,
13 vector min, vector max);
17 typedef struct objectlist {
18 struct objectlist * next;
41 #define voxel2x(g,X) ((X) * (g->voxsize.x) + (g->min.x)) 43 #define voxel2y(g,Y) ((Y) * (g->voxsize.y) + (g->min.y)) 45 #define voxel2z(g,Z) ((Z) * (g->voxsize.z) + (g->min.z)) 48 #define x2voxel(g,x) (((x) - g->min.x) / g->voxsize.x) 50 #define y2voxel(g,y) (((y) - g->min.y) / g->voxsize.y) 52 #define z2voxel(g,z) (((z) - g->min.z) / g->voxsize.z) 55 static void gridstats(
int xs,
int ys,
int zs,
int numobj);
56 static int grid_bbox(
void * obj, vector * min, vector * max);
59 static ptrdiff_t
cellbound(
const grid *g,
const gridindex *index, vector * cmin, vector * cmax);
62 static int engrid_object(grid * g,
object * obj,
int addtolist);
65 static int engrid_cell(scenedef *,
int, grid *, gridindex *);
67 static int pos2grid(grid * g, vector * pos, gridindex * index);
static ptrdiff_t cellbound(const grid *g, const gridindex *index, vector *cmin, vector *cmax)
static int pos2grid(grid *g, vector *pos, gridindex *index)
object * newgrid(scenedef *scene, int xsize, int ysize, int zsize, vector min, vector max)
double flt
generic floating point number, using double
static int grid_bounds_intersect(const grid *g, const ray *ry, flt *hitnear, flt *hitfar)
int engrid_scene(scenedef *scene, int boundthresh)
static int engrid_object(grid *g, object *obj, int addtolist)
static void gridstats(int xs, int ys, int zs, int numobj)
static void grid_free(void *v)
static int engrid_cell(scenedef *scene, int boundthresh, grid *gold, gridindex *index)
static void grid_intersect(const grid *g, ray *ry)
static int engrid_objectlist(grid *g, objectlist **list)
static ptrdiff_t engrid_objlist(grid *g, object **list)
static int grid_bbox(void *obj, vector *min, vector *max)