-/*
-void Mod_Q3BSP_RecursiveGetVisible(q3mnode_t *node, model_t *model, const vec3_t point, const vec3_t mins, const vec3_t maxs, int maxleafs, q3mleaf_t *leaflist, int *numleafs, int maxsurfaces, q3msurface_t *surfacelist, int *numsurfaces, const qbyte *pvs)
-{
- mleaf_t *leaf;
- for (;;)
- {
- if (!BoxesOverlap(node->mins, node->maxs, mins, maxs))
- return;
- if (!node->plane)
- break;
- Mod_Q3BSP_RecursiveGetVisible(node->children[0], model, point, mins, maxs, maxleafs, leaflist, numleafs, maxsurfaces, surfacelist, numsurfaces, pvs);
- node = node->children[1];
- }
- leaf = (mleaf_t *)node;
- if ((pvs == NULL || CHECKPVSBIT(pvs, leaf->clusterindex)))
- {
- int marksurfacenum;
- q3msurface_t *surf;
- if (maxleafs && *numleafs < maxleafs)
- leaflist[(*numleaf)++] = leaf;
- if (maxsurfaces)
- {
- for (marksurfacenum = 0;marksurfacenum < leaf->nummarksurfaces;marksurfacenum++)
- {
- face = leaf->firstleafface[marksurfacenum];
- if (face->shadowmark != shadowmarkcount)
- {
- face->shadowmark = shadowmarkcount;
- if (BoxesOverlap(mins, maxs, face->mins, face->maxs) && *numsurfaces < maxsurfaces)
- surfacelist[(*numsurfaces)++] = face;
- }
- }
- }
- }
-}
-
-void Mod_Q3BSP_GetVisible(model_t *model, const vec3_t point, const vec3_t mins, const vec3_t maxs, int maxleafs, q3mleaf_t *leaflist, int *numleafs, int maxsurfaces, q3msurface_t *surfacelist, int *numsurfaces)
-{
- // FIXME: support portals
- if (maxsurfaces)
- *numsurfaces = 0;
- if (maxleafs)
- *numleafs = 0;
- if (model->submodel)
- {
- if (maxsurfaces)
- {
- for (marksurfacenum = 0;marksurfacenum < leaf->nummarksurfaces;marksurfacenum++)
- {
- face = ent->model->brushq3.surfaces + leaf->firstmarksurface[marksurfacenum];
- if (BoxesOverlap(mins, maxs, face->mins, face->maxs) && *numsurfaces < maxsurfaces)
- surfacelist[(*numsurfaces)++] = face;
- }
- }
- }
- else
- {
- pvs = ent->model->brush.GetPVS(ent->model, relativelightorigin);
- Mod_Q3BSP_RecursiveGetVisible(ent->model->brushq3.data_nodes, model, point, mins, maxs, maxleafs, leaflist, numleafs, maxsurfaces, surfacelist, numsurfaces, pvs);
- }
-}
-*/
-
-void Mod_Q3BSP_BuildTextureFaceLists(void)
-{
- int i, j;
- loadmodel->brushq3.data_texturefaces = Mem_Alloc(loadmodel->mempool, loadmodel->nummodelsurfaces * sizeof(q3msurface_t *));
- loadmodel->brushq3.data_texturefacenums = Mem_Alloc(loadmodel->mempool, loadmodel->nummodelsurfaces * sizeof(int));
- for (i = 0;i < loadmodel->brushq3.num_textures;i++)
- loadmodel->brushq3.data_textures[i].numfaces = 0;
- for (i = 0;i < loadmodel->nummodelsurfaces;i++)
- loadmodel->brushq3.data_faces[loadmodel->surfacelist[i]].texture->numfaces++;
- j = 0;
- for (i = 0;i < loadmodel->brushq3.num_textures;i++)
- {
- loadmodel->brushq3.data_textures[i].facelist = loadmodel->brushq3.data_texturefaces + j;
- loadmodel->brushq3.data_textures[i].facenumlist = loadmodel->brushq3.data_texturefacenums + j;
- j += loadmodel->brushq3.data_textures[i].numfaces;
- loadmodel->brushq3.data_textures[i].numfaces = 0;
- }
- for (i = 0;i < loadmodel->nummodelsurfaces;i++)
- {
- loadmodel->brushq3.data_faces[loadmodel->surfacelist[i]].texture->facenumlist[loadmodel->brushq3.data_faces[loadmodel->surfacelist[i]].texture->numfaces] = loadmodel->surfacelist[i];
- loadmodel->brushq3.data_faces[loadmodel->surfacelist[i]].texture->facelist[loadmodel->brushq3.data_faces[loadmodel->surfacelist[i]].texture->numfaces++] = loadmodel->brushq3.data_faces + loadmodel->surfacelist[i];
- }
-}
-
-void Mod_Q3BSP_RecursiveFindNumLeafs(q3mnode_t *node)