object * newgrid(int xsize, int ysize, int zsize, vector min, vector max) { grid * g; g = (grid *) rt_getmem(sizeof(grid)); memset(g, 0, sizeof(grid)); g->methods = &grid_methods; g->id = new_objectid(); g->xsize = xsize; g->ysize = ysize; g->zsize = zsize; g->min = min; g->max = max; VSub(&g->max, &g->min, &g->voxsize); g->voxsize.x /= (flt) g->xsize; g->voxsize.y /= (flt) g->ysize; g->voxsize.z /= (flt) g->zsize; g->cells = (objectlist **) rt_getmem(xsize*ysize*zsize*sizeof(objectlist *)); memset(g->cells, 0, xsize*ysize*zsize * sizeof(objectlist *)); /* fprintf(stderr, "New grid, size: %8d %8d %8d\n", g->xsize, g->ysize, g->zsize); */ return (object *) g; }
void add_object(object * obj) { object * objtemp; if (obj == NULL) return; obj->id = new_objectid(); objtemp = rootobj; rootobj = obj; obj->nextobj = objtemp; }
static void add_unbounded_object(scenedef * scene, object * obj) { object * objtemp; if (obj == NULL) return; obj->id = new_objectid(scene); objtemp = scene->objgroup.unboundedobj; scene->objgroup.unboundedobj = obj; obj->nextobj = objtemp; obj->clip = scene->curclipgroup; scene->scenecheck = 1; }
static void add_bounded_object(scenedef * scene, object * obj) { object * objtemp; if (obj == NULL) return; obj->id = new_objectid(scene); objtemp = scene->objgroup.boundedobj; scene->objgroup.boundedobj = obj; obj->nextobj = objtemp; obj->clip = scene->curclipgroup; /* XXX Clipping ought to be applied to objects before they */ /* are even added to the internal data structures, so */ /* they aren't even considered during rendering. */ scene->scenecheck = 1; }