Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

l_bsp_q2.c File Reference

#include "l_cmd.h"
#include "l_math.h"
#include "l_mem.h"
#include "l_log.h"
#include "l_poly.h"
#include "../botlib/l_script.h"
#include "q2files.h"
#include "l_bsp_q2.h"
#include "l_bsp_ent.h"

Include dependency graph for l_bsp_q2.c:

Include dependency graph

Go to the source code of this file.

Defines

#define MAX_MAP_DPOP   256
#define q2_darea_t   darea_t
#define q2_dareaportal_t   dareaportal_t
#define q2_dareaportals   dareaportals
#define q2_dareas   dareas
#define q2_dbrush_t   dbrush_t
#define q2_dbrushes   dbrushes
#define q2_dbrushside_t   dbrushside_t
#define q2_dbrushsides   dbrushsides
#define q2_dedge_t   dedge_t
#define q2_dedges   dedges
#define q2_dface_t   dface_t
#define q2_dfaces   dfaces
#define q2_dheader_t   dheader_t
#define q2_dleaf_t   dleaf_t
#define q2_dleafbrushes   dleafbrushes
#define q2_dleaffaces   dleaffaces
#define q2_dleafs   dleafs
#define q2_dmodel_t   dmodel_t
#define q2_dmodel_t   dmodel_t
#define q2_dmodels   dmodels
#define q2_dnode_t   dnode_t
#define q2_dnodes   dnodes
#define q2_dplane_t   dplane_t
#define q2_dplanes   dplanes
#define q2_dsurfedges   dsurfedges
#define q2_dvertex_t   dvertex_t
#define q2_dvertexes   dvertexes
#define q2_dvis_t   dvis_t
#define q2_lump_t   lump_t
#define q2_numareaportals   numareaportals
#define q2_numareas   numareas
#define q2_numbrushes   numbrushes
#define q2_numbrushsides   numbrushsides
#define q2_numedges   numedges
#define q2_numfaces   numfaces
#define q2_numleafbrushes   numleafbrushes
#define q2_numleaffaces   numleaffaces
#define q2_numleafs   numleafs
#define q2_nummodels   nummodels
#define q2_numnodes   numnodes
#define q2_numplanes   numplanes
#define q2_numtexinfo   numtexinfo
#define q2_numvertexes   numvertexes
#define q2_texinfo   texinfo
#define q2_texinfo_t   texinfo_t
#define WCONVEX_EPSILON   0.5

Functions

void GetLeafNums (void)
int InsideFace (dface_t *face, vec3_t point)
int InsideWinding (winding_t *w, vec3_t point, int planenum)
void Q2_AddLump (int lumpnum, void *data, int len)
void Q2_AllocMaxBSP (void)
winding_tQ2_BrushSideWinding (dbrush_t *brush, dbrushside_t *baseside)
int Q2_CompressVis (byte *vis, byte *dest)
int Q2_CopyLump (int lump, void *dest, int size, int maxsize)
void Q2_DecompressVis (byte *in, byte *decompressed)
float Q2_FaceOnWinding (q2_dface_t *face, winding_t *winding)
void Q2_FixTextureReferences (void)
void Q2_FreeMaxBSP (void)
int Q2_HintSkipBrush (dbrush_t *brush)
void Q2_LoadBSPFile (char *filename, int offset, int length)
void Q2_LoadBSPFileTexinfo (char *filename)
void Q2_ParseEntities (void)
void Q2_PrintBSPFileSizes (void)
void Q2_SwapBSPFile (qboolean todisk)
void Q2_UnparseEntities (void)
void Q2_WriteBSPFile (char *filename)
qboolean WindingIsTiny (winding_t *w)

Variables

int allocatedbspmem = 0
char brushsidetextured [MAX_MAP_BRUSHSIDES]
int bspallocated = false
dareaportal_tdareaportals
darea_tdareas
dbrush_tdbrushes
dbrushside_tdbrushsides
dedge_tdedges
char * dentdata
dface_tdfaces
unsigned short * dleafbrushes
unsigned short * dleaffaces
dleaf_tdleafs
bytedlightdata
dmodel_tdmodels
dnode_tdnodes
dplane_tdplanes
byte dpop [MAX_MAP_DPOP]
int * dsurfedges
dvertex_tdvertexes
dvis_tdvis
bytedvisdata
int entdatasize
dheader_theader
int lightdatasize
int numareaportals
int numareas
int numbrushes
int numbrushsides
int numedges
int numfaces
int numleafbrushes
int numleaffaces
int numleafs
int nummodels
int numnodes
int numplanes
int numsurfedges
int numtexinfo
int numvertexes
dheader_t outheader
texinfo_t texinfo [MAX_MAP_TEXINFO]
int visdatasize
FILEwadfile


Define Documentation

#define MAX_MAP_DPOP   256
 

Definition at line 140 of file l_bsp_q2.c.

Referenced by Q2_LoadBSPFile().

#define q2_darea_t   darea_t
 

Definition at line 48 of file l_bsp_q2.c.

#define q2_dareaportal_t   dareaportal_t
 

Definition at line 47 of file l_bsp_q2.c.

#define q2_dareaportals   dareaportals
 

Definition at line 78 of file l_bsp_q2.c.

#define q2_dareas   dareas
 

Definition at line 76 of file l_bsp_q2.c.

#define q2_dbrush_t   dbrush_t
 

Definition at line 45 of file l_bsp_q2.c.

#define q2_dbrushes   dbrushes
 

Definition at line 72 of file l_bsp_q2.c.

#define q2_dbrushside_t   dbrushside_t
 

Definition at line 44 of file l_bsp_q2.c.

#define q2_dbrushsides   dbrushsides
 

Definition at line 74 of file l_bsp_q2.c.

#define q2_dedge_t   dedge_t
 

Definition at line 41 of file l_bsp_q2.c.

#define q2_dedges   dedges
 

Definition at line 65 of file l_bsp_q2.c.

Referenced by Q2_FaceOnWinding().

#define q2_dface_t   dface_t
 

Definition at line 42 of file l_bsp_q2.c.

#define q2_dfaces   dfaces
 

Definition at line 63 of file l_bsp_q2.c.

#define q2_dheader_t   dheader_t
 

Definition at line 35 of file l_bsp_q2.c.

#define q2_dleaf_t   dleaf_t
 

Definition at line 43 of file l_bsp_q2.c.

#define q2_dleafbrushes   dleafbrushes
 

Definition at line 69 of file l_bsp_q2.c.

#define q2_dleaffaces   dleaffaces
 

Definition at line 67 of file l_bsp_q2.c.

#define q2_dleafs   dleafs
 

Definition at line 53 of file l_bsp_q2.c.

#define q2_dmodel_t   dmodel_t
 

Definition at line 36 of file l_bsp_q2.c.

#define q2_dmodel_t   dmodel_t
 

Definition at line 36 of file l_bsp_q2.c.

#define q2_dmodels   dmodels
 

Definition at line 51 of file l_bsp_q2.c.

#define q2_dnode_t   dnode_t
 

Definition at line 39 of file l_bsp_q2.c.

#define q2_dnodes   dnodes
 

Definition at line 59 of file l_bsp_q2.c.

#define q2_dplane_t   dplane_t
 

Definition at line 38 of file l_bsp_q2.c.

Referenced by Q2_FaceOnWinding().

#define q2_dplanes   dplanes
 

Definition at line 55 of file l_bsp_q2.c.

Referenced by Q2_FaceOnWinding().

#define q2_dsurfedges   dsurfedges
 

Definition at line 70 of file l_bsp_q2.c.

Referenced by Q2_FaceOnWinding().

#define q2_dvertex_t   dvertex_t
 

Definition at line 37 of file l_bsp_q2.c.

#define q2_dvertexes   dvertexes
 

Definition at line 57 of file l_bsp_q2.c.

Referenced by Q2_FaceOnWinding().

#define q2_dvis_t   dvis_t
 

Definition at line 46 of file l_bsp_q2.c.

#define q2_lump_t   lump_t
 

Definition at line 34 of file l_bsp_q2.c.

#define q2_numareaportals   numareaportals
 

Definition at line 77 of file l_bsp_q2.c.

#define q2_numareas   numareas
 

Definition at line 75 of file l_bsp_q2.c.

#define q2_numbrushes   numbrushes
 

Definition at line 71 of file l_bsp_q2.c.

#define q2_numbrushsides   numbrushsides
 

Definition at line 73 of file l_bsp_q2.c.

#define q2_numedges   numedges
 

Definition at line 64 of file l_bsp_q2.c.

#define q2_numfaces   numfaces
 

Definition at line 62 of file l_bsp_q2.c.

#define q2_numleafbrushes   numleafbrushes
 

Definition at line 68 of file l_bsp_q2.c.

#define q2_numleaffaces   numleaffaces
 

Definition at line 66 of file l_bsp_q2.c.

#define q2_numleafs   numleafs
 

Definition at line 52 of file l_bsp_q2.c.

#define q2_nummodels   nummodels
 

Definition at line 50 of file l_bsp_q2.c.

#define q2_numnodes   numnodes
 

Definition at line 58 of file l_bsp_q2.c.

#define q2_numplanes   numplanes
 

Definition at line 54 of file l_bsp_q2.c.

#define q2_numtexinfo   numtexinfo
 

Definition at line 60 of file l_bsp_q2.c.

#define q2_numvertexes   numvertexes
 

Definition at line 56 of file l_bsp_q2.c.

#define q2_texinfo   texinfo
 

Definition at line 61 of file l_bsp_q2.c.

#define q2_texinfo_t   texinfo_t
 

Definition at line 40 of file l_bsp_q2.c.

#define WCONVEX_EPSILON   0.5
 

Definition at line 318 of file l_bsp_q2.c.


Function Documentation

void GetLeafNums void   ) 
 

int InsideFace dface_t face,
vec3_t  point
 

Definition at line 344 of file l_bsp_q2.c.

References abs(), CrossProduct(), dedges, DotProduct, dplanes, dsurfedges, dvertexes, dface_t::firstedge, i, dplane_t::normal, dface_t::numedges, dface_t::planenum, point, dvertex_t::point, dedge_t::v, v1, v2, vec3_t, vec_t, VectorNormalize(), and VectorSubtract.

00345 {
00346     int i, edgenum, side;
00347     float dist;
00348     vec_t *v1, *v2;
00349     vec3_t normal, edgevec;
00350     dplane_t *plane;
00351 
00352     for (i = 0; i < face->numedges; i++)
00353     {
00354         //get the first and second vertex of the edge
00355         edgenum = dsurfedges[face->firstedge + i];
00356         side = edgenum < 0;
00357         v1 = dvertexes[dedges[abs(edgenum)].v[side]].point;
00358         v2 = dvertexes[dedges[abs(edgenum)].v[!side]].point;
00359         //create a plane through the edge vector, orthogonal to the face plane
00360         //and with the normal vector pointing out of the face
00361         VectorSubtract(v1, v2, edgevec);
00362         plane = &dplanes[face->planenum];
00363         CrossProduct(plane->normal, edgevec, normal);
00364         VectorNormalize(normal);
00365         dist = DotProduct(normal, v1);
00366         //
00367         if (DotProduct(normal, point) - dist > WCONVEX_EPSILON) return false;
00368     } //end for
00369     return true;
00370 } //end of the function InsideFace

Here is the call graph for this function:

int InsideWinding winding_t w,
vec3_t  point,
int  planenum
 

Definition at line 320 of file l_bsp_q2.c.

References CrossProduct(), DotProduct, dplanes, i, dplane_t::normal, winding_t::numpoints, winding_t::p, point, v1, v2, vec3_t, vec_t, VectorNormalize(), VectorSubtract, and w.

00321 {
00322     int i;
00323     float dist;
00324     vec_t *v1, *v2;
00325     vec3_t normal, edgevec;
00326     dplane_t *plane;
00327 
00328     for (i = 1; i <= w->numpoints; i++)
00329     {
00330         v1 = w->p[i % w->numpoints];
00331         v2 = w->p[(i + 1) % w->numpoints];
00332 
00333         VectorSubtract(v2, v1, edgevec);
00334         plane = &dplanes[planenum];
00335         CrossProduct(plane->normal, edgevec, normal);
00336         VectorNormalize(normal);
00337         dist = DotProduct(normal, v1);
00338         //
00339         if (DotProduct(normal, point) - dist > WCONVEX_EPSILON) return false;
00340     } //end for
00341     return true;
00342 } //end of the function InsideWinding

Here is the call graph for this function:

void Q2_AddLump int  lumpnum,
void *  data,
int  len
 

Definition at line 952 of file l_bsp_q2.c.

References data, lump_t::filelen, lump_t::fileofs, ftell(), header, LittleLong(), dheader_t::lumps, SafeWrite(), and wadfile.

Referenced by Q2_WriteBSPFile().

00953 {
00954     lump_t *lump;
00955 
00956     lump = &header->lumps[lumpnum];
00957     
00958     lump->fileofs = LittleLong( ftell(wadfile) );
00959     lump->filelen = LittleLong(len);
00960     SafeWrite (wadfile, data, (len+3)&~3);
00961 } //end of the function Q2_AddLump

Here is the call graph for this function:

void Q2_AllocMaxBSP void   ) 
 

Definition at line 151 of file l_bsp_q2.c.

References allocatedbspmem, byte, dareaportals, dareas, dbrushes, dbrushsides, dedges, dentdata, dfaces, dleafbrushes, dleaffaces, dleafs, dlightdata, dmodels, dnodes, dplanes, dsurfedges, dvertexes, dvis, dvisdata, entdatasize, GetClearedMemory(), lightdatasize, Log_Print(), MAX_MAP_AREAPORTALS, MAX_MAP_AREAS, MAX_MAP_BRUSHES, MAX_MAP_BRUSHSIDES, MAX_MAP_EDGES, MAX_MAP_ENTSTRING, MAX_MAP_FACES, MAX_MAP_LEAFBRUSHES, MAX_MAP_LEAFFACES, MAX_MAP_LEAFS, MAX_MAP_LIGHTING, MAX_MAP_MODELS, MAX_MAP_NODES, MAX_MAP_PLANES, MAX_MAP_SURFEDGES, MAX_MAP_VERTS, MAX_MAP_VISIBILITY, numareaportals, numareas, numbrushes, numbrushsides, numedges, numfaces, numleafbrushes, numleaffaces, numleafs, nummodels, numnodes, numplanes, numsurfedges, numvertexes, PrintMemorySize(), and visdatasize.

Referenced by LoadMapFromBSP().

00152 {
00153     //models
00154     nummodels = 0;
00155     dmodels = (dmodel_t *) GetClearedMemory(MAX_MAP_MODELS * sizeof(dmodel_t));
00156     allocatedbspmem += MAX_MAP_MODELS * sizeof(dmodel_t);
00157     //vis data
00158     visdatasize = 0;
00159     dvisdata = (byte *) GetClearedMemory(MAX_MAP_VISIBILITY * sizeof(byte));
00160     dvis = (dvis_t *) dvisdata;
00161     allocatedbspmem += MAX_MAP_VISIBILITY * sizeof(byte);
00162     //light data
00163     lightdatasize = 0;
00164     dlightdata = (byte *) GetClearedMemory(MAX_MAP_LIGHTING * sizeof(byte));
00165     allocatedbspmem += MAX_MAP_LIGHTING * sizeof(byte);
00166     //entity data
00167     entdatasize = 0;
00168     dentdata = (char *) GetClearedMemory(MAX_MAP_ENTSTRING * sizeof(char));
00169     allocatedbspmem += MAX_MAP_ENTSTRING * sizeof(char);
00170     //leafs
00171     numleafs = 0;
00172     dleafs = (dleaf_t *) GetClearedMemory(MAX_MAP_LEAFS * sizeof(dleaf_t));
00173     allocatedbspmem += MAX_MAP_LEAFS * sizeof(dleaf_t);
00174     //planes
00175     numplanes = 0;
00176     dplanes = (dplane_t *) GetClearedMemory(MAX_MAP_PLANES * sizeof(dplane_t));
00177     allocatedbspmem += MAX_MAP_PLANES * sizeof(dplane_t);
00178     //vertexes
00179     numvertexes = 0;
00180     dvertexes = (dvertex_t *) GetClearedMemory(MAX_MAP_VERTS * sizeof(dvertex_t));
00181     allocatedbspmem += MAX_MAP_VERTS * sizeof(dvertex_t);
00182     //nodes
00183     numnodes = 0;
00184     dnodes = (dnode_t *) GetClearedMemory(MAX_MAP_NODES * sizeof(dnode_t));
00185     allocatedbspmem += MAX_MAP_NODES * sizeof(dnode_t);
00186     /*
00187     //texture info
00188     numtexinfo = 0;
00189     texinfo = (texinfo_t *) GetClearedMemory(MAX_MAP_TEXINFO * sizeof(texinfo_t));
00190     allocatedbspmem += MAX_MAP_TEXINFO * sizeof(texinfo_t);
00191     //*/
00192     //faces
00193     numfaces = 0;
00194     dfaces = (dface_t *) GetClearedMemory(MAX_MAP_FACES * sizeof(dface_t));
00195     allocatedbspmem += MAX_MAP_FACES * sizeof(dface_t);
00196     //edges
00197     numedges = 0;
00198     dedges = (dedge_t *) GetClearedMemory(MAX_MAP_EDGES * sizeof(dedge_t));
00199     allocatedbspmem += MAX_MAP_EDGES * sizeof(dedge_t);
00200     //leaf faces
00201     numleaffaces = 0;
00202     dleaffaces = (unsigned short *) GetClearedMemory(MAX_MAP_LEAFFACES * sizeof(unsigned short));
00203     allocatedbspmem += MAX_MAP_LEAFFACES * sizeof(unsigned short);
00204     //leaf brushes
00205     numleafbrushes = 0;
00206     dleafbrushes = (unsigned short *) GetClearedMemory(MAX_MAP_LEAFBRUSHES * sizeof(unsigned short));
00207     allocatedbspmem += MAX_MAP_LEAFBRUSHES * sizeof(unsigned short);
00208     //surface edges
00209     numsurfedges = 0;
00210     dsurfedges = (int *) GetClearedMemory(MAX_MAP_SURFEDGES * sizeof(int));
00211     allocatedbspmem += MAX_MAP_SURFEDGES * sizeof(int);
00212     //brushes
00213     numbrushes = 0;
00214     dbrushes = (dbrush_t *) GetClearedMemory(MAX_MAP_BRUSHES * sizeof(dbrush_t));
00215     allocatedbspmem += MAX_MAP_BRUSHES * sizeof(dbrush_t);
00216     //brushsides
00217     numbrushsides = 0;
00218     dbrushsides = (dbrushside_t *) GetClearedMemory(MAX_MAP_BRUSHSIDES * sizeof(dbrushside_t));
00219     allocatedbspmem += MAX_MAP_BRUSHSIDES * sizeof(dbrushside_t);
00220     //areas
00221     numareas = 0;
00222     dareas = (darea_t *) GetClearedMemory(MAX_MAP_AREAS * sizeof(darea_t));
00223     allocatedbspmem += MAX_MAP_AREAS * sizeof(darea_t);
00224     //area portals
00225     numareaportals = 0;
00226     dareaportals = (dareaportal_t *) GetClearedMemory(MAX_MAP_AREAPORTALS * sizeof(dareaportal_t));
00227     allocatedbspmem += MAX_MAP_AREAPORTALS * sizeof(dareaportal_t);
00228     //print allocated memory
00229     Log_Print("allocated ");
00230     PrintMemorySize(allocatedbspmem);
00231     Log_Print(" of BSP memory\n");
00232 } //end of the function Q2_AllocMaxBSP

Here is the call graph for this function:

winding_t* Q2_BrushSideWinding dbrush_t brush,
dbrushside_t baseside
 

Definition at line 428 of file l_bsp_q2.c.

References BaseWindingForPlane(), ChopWindingInPlace(), dbrushsides, dplane_t::dist, DotProduct, dplanes, fabs(), dbrush_t::firstside, i, dplane_t::normal, dbrush_t::numsides, dbrushside_t::planenum, and w.

Referenced by Q2_FixTextureReferences().

00429 {
00430     int i;
00431     dplane_t *baseplane, *plane;
00432     winding_t *w;
00433     dbrushside_t *side;
00434     
00435     //create a winding for the brush side with the given planenumber
00436     baseplane = &dplanes[baseside->planenum];
00437     w = BaseWindingForPlane(baseplane->normal, baseplane->dist);
00438     for (i = 0; i < brush->numsides && w; i++)
00439     {
00440         side = &dbrushsides[brush->firstside + i];
00441         //don't chop with the base plane
00442         if (side->planenum == baseside->planenum) continue;
00443         //also don't use planes that are almost equal
00444         plane = &dplanes[side->planenum];
00445         if (DotProduct(baseplane->normal, plane->normal) > 0.999
00446                 && fabs(baseplane->dist - plane->dist) < 0.01) continue;
00447         //
00448         plane = &dplanes[side->planenum^1];
00449         ChopWindingInPlace(&w, plane->normal, plane->dist, -0.1); //CLIP_EPSILON);
00450     } //end for
00451     return w;
00452 } //end of the function Q2_BrushSideWinding

Here is the call graph for this function:

int Q2_CompressVis byte vis,
byte dest
 

Definition at line 568 of file l_bsp_q2.c.

References byte, dvis, j, and dvis_t::numclusters.

00569 {
00570     int     j;
00571     int     rep;
00572     int     visrow;
00573     byte    *dest_p;
00574     
00575     dest_p = dest;
00576 //  visrow = (r_numvisleafs + 7)>>3;
00577     visrow = (dvis->numclusters + 7)>>3;
00578     
00579     for (j=0 ; j<visrow ; j++)
00580     {
00581         *dest_p++ = vis[j];
00582         if (vis[j])
00583             continue;
00584 
00585         rep = 1;
00586         for ( j++; j<visrow ; j++)
00587             if (vis[j] || rep == 255)
00588                 break;
00589             else
00590                 rep++;
00591         *dest_p++ = rep;
00592         j--;
00593     }
00594     
00595     return dest_p - dest;
00596 }

int Q2_CopyLump int  lump,
void *  dest,
int  size,
int  maxsize
 

Definition at line 830 of file l_bsp_q2.c.

References byte, Error(), lump_t::filelen, lump_t::fileofs, header, length(), dheader_t::lumps, and memcpy().

Referenced by Q2_LoadBSPFile().

00831 {
00832     int     length, ofs;
00833 
00834     length = header->lumps[lump].filelen;
00835     ofs = header->lumps[lump].fileofs;
00836     
00837     if (length % size)
00838         Error ("LoadBSPFile: odd lump size");
00839 
00840    if ((length/size) > maxsize)
00841       Error ("Q2_LoadBSPFile: exceeded max size for lump %d size %d > maxsize %d\n", lump, (length/size), maxsize);
00842 
00843     memcpy (dest, (byte *)header + ofs, length);
00844 
00845     return length / size;
00846 } //end of the function Q2_CopyLump

Here is the call graph for this function:

void Q2_DecompressVis byte in,
byte decompressed
 

Definition at line 604 of file l_bsp_q2.c.

References byte, c, dvis, Error(), in, and dvis_t::numclusters.

00605 {
00606     int     c;
00607     byte    *out;
00608     int     row;
00609 
00610 //  row = (r_numvisleafs+7)>>3; 
00611     row = (dvis->numclusters+7)>>3; 
00612     out = decompressed;
00613 
00614     do
00615     {
00616         if (*in)
00617         {
00618             *out++ = *in++;
00619             continue;
00620         }
00621     
00622         c = in[1];
00623         if (!c)
00624             Error ("DecompressVis: 0 repeat");
00625         in += 2;
00626         while (c)
00627         {
00628             *out++ = 0;
00629             c--;
00630         }
00631     } while (out - decompressed < row);
00632 }

Here is the call graph for this function:

float Q2_FaceOnWinding q2_dface_t *  face,
winding_t winding
 

Definition at line 378 of file l_bsp_q2.c.

References abs(), ChopWindingInPlace(), CopyWinding(), CrossProduct(), DotProduct, FreeWinding(), i, memcpy(), q2_dedges, q2_dplane_t, q2_dplanes, q2_dsurfedges, q2_dvertexes, v1, v2, vec3_t, vec_t, VectorNegate, VectorNormalize(), VectorSubtract, w, and WindingArea().

Referenced by Q2_FixTextureReferences().

00379 {
00380     int i, edgenum, side;
00381     float dist, area;
00382     q2_dplane_t plane;
00383     vec_t *v1, *v2;
00384     vec3_t normal, edgevec;
00385     winding_t *w;
00386 
00387     //
00388     w = CopyWinding(winding);
00389     memcpy(&plane, &q2_dplanes[face->planenum], sizeof(q2_dplane_t));
00390     //check on which side of the plane the face is
00391     if (face->side)
00392     {
00393         VectorNegate(plane.normal, plane.normal);
00394         plane.dist = -plane.dist;
00395     } //end if
00396     for (i = 0; i < face->numedges && w; i++)
00397     {
00398         //get the first and second vertex of the edge
00399         edgenum = q2_dsurfedges[face->firstedge + i];
00400         side = edgenum > 0;
00401         //if the face plane is flipped
00402         v1 = q2_dvertexes[q2_dedges[abs(edgenum)].v[side]].point;
00403         v2 = q2_dvertexes[q2_dedges[abs(edgenum)].v[!side]].point;
00404         //create a plane through the edge vector, orthogonal to the face plane
00405         //and with the normal vector pointing inward
00406         VectorSubtract(v1, v2, edgevec);
00407         CrossProduct(edgevec, plane.normal, normal);
00408         VectorNormalize(normal);
00409         dist = DotProduct(normal, v1);
00410         //
00411         ChopWindingInPlace(&w, normal, dist, -0.1); //CLIP_EPSILON
00412     } //end for
00413     if (w)
00414     {
00415         area = WindingArea(w);
00416         FreeWinding(w);
00417         return area;
00418     } //end if
00419     return 0;
00420 } //end of the function Q2_FaceOnWinding

Here is the call graph for this function:

void Q2_FixTextureReferences void   ) 
 

Definition at line 486 of file l_bsp_q2.c.

References brushsidetextured, dbrushes, dbrushsides, dfaces, dbrush_t::firstside, FreeWinding(), i, j, k, MAX_MAP_BRUSHSIDES, memset(), dbrush_t::numsides, dbrushside_t::planenum, dface_t::planenum, Q2_BrushSideWinding(), Q2_FaceOnWinding(), Q2_HintSkipBrush(), dface_t::texinfo, dbrushside_t::texinfo, w, WE_NOTENOUGHPOINTS, WE_POINTBOGUSRANGE, WE_SMALLAREA, WindingArea(), WindingError(), and WindingIsTiny().

Referenced by Q2_LoadBSPFile().

00487 {
00488     int i, j, k, we;
00489     dbrushside_t *brushside;
00490     dbrush_t *brush;
00491     dface_t *face;
00492     winding_t *w;
00493 
00494     memset(brushsidetextured, false, MAX_MAP_BRUSHSIDES);
00495     //go over all the brushes
00496    for (i = 0; i < numbrushes; i++)
00497    {
00498         brush = &dbrushes[i];
00499         //hint brushes are not textured
00500         if (Q2_HintSkipBrush(brush)) continue;
00501         //go over all the sides of the brush
00502         for (j = 0; j < brush->numsides; j++)
00503         {
00504             brushside = &dbrushsides[brush->firstside + j];
00505             //
00506             w = Q2_BrushSideWinding(brush, brushside);
00507             if (!w)
00508             {
00509                 brushsidetextured[brush->firstside + j] = true;
00510                 continue;
00511             } //end if
00512             else
00513             {
00514                 //RemoveEqualPoints(w, 0.2);
00515                 if (WindingIsTiny(w))
00516                 {
00517                     FreeWinding(w);
00518                     brushsidetextured[brush->firstside + j] = true;
00519                     continue;
00520                 } //end if
00521                 else
00522                 {
00523                     we = WindingError(w);
00524                     if (we == WE_NOTENOUGHPOINTS
00525                         || we == WE_SMALLAREA
00526                         || we == WE_POINTBOGUSRANGE
00527 //                      || we == WE_NONCONVEX
00528                         )
00529                     {
00530                         FreeWinding(w);
00531                         brushsidetextured[brush->firstside + j] = true;
00532                         continue;
00533                     } //end if
00534                 } //end else
00535             } //end else
00536             if (WindingArea(w) < 20)
00537             {
00538                 brushsidetextured[brush->firstside + j] = true;
00539             } //end if
00540             //find a face for texturing this brush
00541             for (k = 0; k < numfaces; k++)
00542             {
00543                 face = &dfaces[k];
00544                 //if the face is in the same plane as the brush side
00545                 if ((face->planenum&~1) != (brushside->planenum&~1)) continue;
00546                 //if the face is partly or totally on the brush side
00547                 if (Q2_FaceOnWinding(face, w))
00548                 {
00549                     brushside->texinfo = face->texinfo;
00550                     brushsidetextured[brush->firstside + j] = true;
00551                     break;
00552                 } //end if
00553             } //end for
00554             FreeWinding(w);
00555         } //end for
00556     } //end for
00557 } //end of the function Q2_FixTextureReferences*/

Here is the call graph for this function:

void Q2_FreeMaxBSP void   ) 
 

Definition at line 234 of file l_bsp_q2.c.

References allocatedbspmem, dareaportals, dareas, dbrushes, dbrushsides, dedges, dentdata, dfaces, dleafbrushes, dleaffaces, dleafs, dlightdata, dmodels, dnodes, dplanes, dsurfedges, dvertexes, dvis, dvisdata, entdatasize, FreeMemory(), lightdatasize, Log_Print(), numareaportals, numareas, numbrushes, numbrushsides, numedges, numfaces, numleafbrushes, numleaffaces, numleafs, nummodels, numnodes, numplanes, numsurfedges, numvertexes, PrintMemorySize(), and visdatasize.

Referenced by LoadMapFromBSP().

00235 {
00236     //models
00237     nummodels = 0;
00238     FreeMemory(dmodels);
00239     dmodels = NULL;
00240     //vis data
00241     visdatasize = 0;
00242     FreeMemory(dvisdata);
00243     dvisdata = NULL;
00244     dvis = NULL;
00245     //light data
00246     lightdatasize = 0;
00247     FreeMemory(dlightdata);
00248     dlightdata = NULL;
00249     //entity data
00250     entdatasize = 0;
00251     FreeMemory(dentdata);
00252     dentdata = NULL;
00253     //leafs
00254     numleafs = 0;
00255     FreeMemory(dleafs);
00256     dleafs = NULL;
00257     //planes
00258     numplanes = 0;
00259     FreeMemory(dplanes);
00260     dplanes = NULL;
00261     //vertexes
00262     numvertexes = 0;
00263     FreeMemory(dvertexes);
00264     dvertexes = NULL;
00265     //nodes
00266     numnodes = 0;
00267     FreeMemory(dnodes);
00268     dnodes = NULL;
00269     /*
00270     //texture info
00271     numtexinfo = 0;
00272     FreeMemory(texinfo);
00273     texinfo = NULL;
00274     //*/
00275     //faces
00276     numfaces = 0;
00277     FreeMemory(dfaces);
00278     dfaces = NULL;
00279     //edges
00280     numedges = 0;
00281     FreeMemory(dedges);
00282     dedges = NULL;
00283     //leaf faces
00284     numleaffaces = 0;
00285     FreeMemory(dleaffaces);
00286     dleaffaces = NULL;
00287     //leaf brushes
00288     numleafbrushes = 0;
00289     FreeMemory(dleafbrushes);
00290     dleafbrushes = NULL;
00291     //surface edges
00292     numsurfedges = 0;
00293     FreeMemory(dsurfedges);
00294     dsurfedges = NULL;
00295     //brushes
00296     numbrushes = 0;
00297     FreeMemory(dbrushes);
00298     dbrushes = NULL;
00299     //brushsides
00300     numbrushsides = 0;
00301     FreeMemory(dbrushsides);
00302     dbrushsides = NULL;
00303     //areas
00304     numareas = 0;
00305     FreeMemory(dareas);
00306     dareas = NULL;
00307     //area portals
00308     numareaportals = 0;
00309     FreeMemory(dareaportals);
00310     dareaportals = NULL;
00311     //
00312     Log_Print("freed ");
00313     PrintMemorySize(allocatedbspmem);
00314     Log_Print(" of BSP memory\n");
00315     allocatedbspmem = 0;
00316 } //end of the function Q2_FreeMaxBSP

Here is the call graph for this function:

int Q2_HintSkipBrush dbrush_t brush  ) 
 

Definition at line 459 of file l_bsp_q2.c.

References dbrushsides, dbrush_t::firstside, texinfo_s::flags, j, dbrush_t::numsides, SURF_SKIP, texinfo, and dbrushside_t::texinfo.

Referenced by Q2_FixTextureReferences().

00460 {
00461     int j;
00462     dbrushside_t *brushside;
00463 
00464     for (j = 0; j < brush->numsides; j++)
00465     {
00466         brushside = &dbrushsides[brush->firstside + j];
00467         if (brushside->texinfo > 0)
00468         {
00469             if (texinfo[brushside->texinfo].flags & (SURF_SKIP|SURF_HINT))
00470             {
00471                 return true;
00472             } //end if
00473         } //end if
00474     } //end for
00475     return false;
00476 } //end of the function Q2_HintSkipBrush

void Q2_LoadBSPFile char *  filename,
int  offset,
int  length
 

Definition at line 853 of file l_bsp_q2.c.

References BSPVERSION, dareaportals, dareas, dbrushes, dbrushsides, dedges, dentdata, dfaces, dleafbrushes, dleaffaces, dleafs, dlightdata, dmodels, dnodes, dplanes, dpop, dsurfedges, dvertexes, dvisdata, entdatasize, Error(), FreeMemory(), header, i, dheader_t::ident, length(), lightdatasize, LittleLong(), LoadFile(), LUMP_AREAPORTALS, LUMP_AREAS, LUMP_BRUSHES, LUMP_BRUSHSIDES, LUMP_EDGES, LUMP_ENTITIES, LUMP_FACES, LUMP_LEAFBRUSHES, LUMP_LEAFFACES, LUMP_LEAFS, LUMP_LIGHTING, LUMP_MODELS, LUMP_NODES, LUMP_PLANES, LUMP_POP, LUMP_SURFEDGES, LUMP_TEXINFO, LUMP_VERTEXES, LUMP_VISIBILITY, MAX_MAP_AREAPORTALS, MAX_MAP_AREAS, MAX_MAP_BRUSHES, MAX_MAP_BRUSHSIDES, MAX_MAP_DPOP, MAX_MAP_EDGES, MAX_MAP_ENTSTRING, MAX_MAP_FACES, MAX_MAP_LEAFBRUSHES, MAX_MAP_LEAFFACES, MAX_MAP_LEAFS, MAX_MAP_LIGHTING, MAX_MAP_MODELS, MAX_MAP_NODES, MAX_MAP_PLANES, MAX_MAP_SURFEDGES, MAX_MAP_TEXINFO, MAX_MAP_VERTS, MAX_MAP_VISIBILITY, numareaportals, numareas, numbrushes, numbrushsides, numedges, numfaces, numleafbrushes, numleaffaces, numleafs, nummodels, numnodes, numplanes, numsurfedges, numtexinfo, numvertexes, offset, Q2_CopyLump(), Q2_FixTextureReferences(), Q2_SwapBSPFile(), texinfo, texinfo_t, dheader_t::version, and visdatasize.

Referenced by Q2_LoadMapFromBSP().

00854 {
00855     int         i;
00856     
00857 //
00858 // load the file header
00859 //
00860     LoadFile (filename, (void **)&header, offset, length);
00861 
00862 // swap the header
00863     for (i=0 ; i< sizeof(dheader_t)/4 ; i++)
00864         ((int *)header)[i] = LittleLong ( ((int *)header)[i]);
00865 
00866     if (header->ident != IDBSPHEADER)
00867         Error ("%s is not a IBSP file", filename);
00868     if (header->version != BSPVERSION)
00869         Error ("%s is version %i, not %i", filename, header->version, BSPVERSION);
00870 
00871     nummodels = Q2_CopyLump (LUMP_MODELS, dmodels, sizeof(dmodel_t), MAX_MAP_MODELS);
00872     numvertexes = Q2_CopyLump (LUMP_VERTEXES, dvertexes, sizeof(dvertex_t), MAX_MAP_VERTS);
00873     numplanes = Q2_CopyLump (LUMP_PLANES, dplanes, sizeof(dplane_t), MAX_MAP_PLANES);
00874     numleafs = Q2_CopyLump (LUMP_LEAFS, dleafs, sizeof(dleaf_t), MAX_MAP_LEAFS);
00875     numnodes = Q2_CopyLump (LUMP_NODES, dnodes, sizeof(dnode_t), MAX_MAP_NODES);
00876     numtexinfo = Q2_CopyLump (LUMP_TEXINFO, texinfo, sizeof(texinfo_t), MAX_MAP_TEXINFO);
00877     numfaces = Q2_CopyLump (LUMP_FACES, dfaces, sizeof(dface_t), MAX_MAP_FACES);
00878     numleaffaces = Q2_CopyLump (LUMP_LEAFFACES, dleaffaces, sizeof(dleaffaces[0]), MAX_MAP_LEAFFACES);
00879     numleafbrushes = Q2_CopyLump (LUMP_LEAFBRUSHES, dleafbrushes, sizeof(dleafbrushes[0]), MAX_MAP_LEAFBRUSHES);
00880     numsurfedges = Q2_CopyLump (LUMP_SURFEDGES, dsurfedges, sizeof(dsurfedges[0]), MAX_MAP_SURFEDGES);
00881     numedges = Q2_CopyLump (LUMP_EDGES, dedges, sizeof(dedge_t), MAX_MAP_EDGES);
00882     numbrushes = Q2_CopyLump (LUMP_BRUSHES, dbrushes, sizeof(dbrush_t), MAX_MAP_BRUSHES);
00883     numbrushsides = Q2_CopyLump (LUMP_BRUSHSIDES, dbrushsides, sizeof(dbrushside_t), MAX_MAP_BRUSHSIDES);
00884     numareas = Q2_CopyLump (LUMP_AREAS, dareas, sizeof(darea_t), MAX_MAP_AREAS);
00885     numareaportals = Q2_CopyLump (LUMP_AREAPORTALS, dareaportals, sizeof(dareaportal_t), MAX_MAP_AREAPORTALS);
00886 
00887     visdatasize = Q2_CopyLump (LUMP_VISIBILITY, dvisdata, 1, MAX_MAP_VISIBILITY);
00888     lightdatasize = Q2_CopyLump (LUMP_LIGHTING, dlightdata, 1, MAX_MAP_LIGHTING);
00889     entdatasize = Q2_CopyLump (LUMP_ENTITIES, dentdata, 1, MAX_MAP_ENTSTRING);
00890 
00891     Q2_CopyLump (LUMP_POP, dpop, 1, MAX_MAP_DPOP);
00892 
00893     FreeMemory(header);     // everything has been copied out
00894         
00895 //
00896 // swap everything
00897 //  
00898     Q2_SwapBSPFile (false);
00899 
00900     Q2_FixTextureReferences();
00901 } //end of the function Q2_LoadBSPFile

Here is the call graph for this function:

void Q2_LoadBSPFileTexinfo char *  filename  ) 
 

Definition at line 911 of file l_bsp_q2.c.

References BSPVERSION, Error(), f, fclose(), lump_t::filelen, lump_t::fileofs, fopen(), fread(), FreeMemory(), fseek(), GetMemory(), header, i, dheader_t::ident, length(), LittleLong(), dheader_t::lumps, numtexinfo, Q2_SwapBSPFile(), SEEK_SET, texinfo, texinfo_t, and dheader_t::version.

00912 {
00913     int         i;
00914     FILE        *f;
00915     int     length, ofs;
00916 
00917     header = GetMemory(sizeof(dheader_t));
00918 
00919     f = fopen (filename, "rb");
00920     fread (header, sizeof(dheader_t), 1, f);
00921 
00922 // swap the header
00923     for (i=0 ; i< sizeof(dheader_t)/4 ; i++)
00924         ((int *)header)[i] = LittleLong ( ((int *)header)[i]);
00925 
00926     if (header->ident != IDBSPHEADER)
00927         Error ("%s is not a IBSP file", filename);
00928     if (header->version != BSPVERSION)
00929         Error ("%s is version %i, not %i", filename, header->version, BSPVERSION);
00930 
00931 
00932     length = header->lumps[LUMP_TEXINFO].filelen;
00933     ofs = header->lumps[LUMP_TEXINFO].fileofs;
00934 
00935     fseek (f, ofs, SEEK_SET);
00936     fread (texinfo, length, 1, f);
00937     fclose (f);
00938 
00939     numtexinfo = length / sizeof(texinfo_t);
00940 
00941     FreeMemory(header);     // everything has been copied out
00942         
00943     Q2_SwapBSPFile (false);
00944 } //end of the function Q2_LoadBSPFileTexinfo

Here is the call graph for this function:

void Q2_ParseEntities void   ) 
 

Definition at line 1070 of file l_bsp_q2.c.

References dentdata, entdatasize, FreeScript(), LoadScriptMemory(), num_entities, ParseEntity(), SCFL_NOSTRINGESCAPECHARS, SCFL_NOSTRINGWHITESPACES, script, and SetScriptFlags().

Referenced by Q2_LoadMapFromBSP(), and Q2_PrintBSPFileSizes().

01071 {
01072     script_t *script;
01073 
01074     num_entities = 0;
01075     script = LoadScriptMemory(dentdata, entdatasize, "*Quake2 bsp file");
01076     SetScriptFlags(script, SCFL_NOSTRINGWHITESPACES |
01077                                     SCFL_NOSTRINGESCAPECHARS);
01078 
01079     while(ParseEntity(script))
01080     {
01081     } //end while
01082 
01083     FreeScript(script);
01084 } //end of the function Q2_ParseEntities

Here is the call graph for this function:

void Q2_PrintBSPFileSizes void   ) 
 

Definition at line 1018 of file l_bsp_q2.c.

References dleafbrushes, dleaffaces, dsurfedges, entdatasize, lightdatasize, num_entities, numareaportals, numareas, numbrushes, numbrushsides, numedges, numfaces, numleafbrushes, numleaffaces, numleafs, nummodels, numnodes, numplanes, numsurfedges, numtexinfo, numvertexes, printf(), Q2_ParseEntities(), texinfo_t, and visdatasize.

01019 {
01020     if (!num_entities)
01021         Q2_ParseEntities();
01022 
01023     printf ("%6i models       %7i\n"
01024         ,nummodels, (int)(nummodels*sizeof(dmodel_t)));
01025     printf ("%6i brushes      %7i\n"
01026         ,numbrushes, (int)(numbrushes*sizeof(dbrush_t)));
01027     printf ("%6i brushsides   %7i\n"
01028         ,numbrushsides, (int)(numbrushsides*sizeof(dbrushside_t)));
01029     printf ("%6i planes       %7i\n"
01030         ,numplanes, (int)(numplanes*sizeof(dplane_t)));
01031     printf ("%6i texinfo      %7i\n"
01032         ,numtexinfo, (int)(numtexinfo*sizeof(texinfo_t)));
01033     printf ("%6i entdata      %7i\n", num_entities, entdatasize);
01034 
01035     printf ("\n");
01036 
01037     printf ("%6i vertexes     %7i\n"
01038         ,numvertexes, (int)(numvertexes*sizeof(dvertex_t)));
01039     printf ("%6i nodes        %7i\n"
01040         ,numnodes, (int)(numnodes*sizeof(dnode_t)));
01041     printf ("%6i faces        %7i\n"
01042         ,numfaces, (int)(numfaces*sizeof(dface_t)));
01043     printf ("%6i leafs        %7i\n"
01044         ,numleafs, (int)(numleafs*sizeof(dleaf_t)));
01045     printf ("%6i leaffaces    %7i\n"
01046         ,numleaffaces, (int)(numleaffaces*sizeof(dleaffaces[0])));
01047     printf ("%6i leafbrushes  %7i\n"
01048         ,numleafbrushes, (int)(numleafbrushes*sizeof(dleafbrushes[0])));
01049     printf ("%6i surfedges    %7i\n"
01050         ,numsurfedges, (int)(numsurfedges*sizeof(dsurfedges[0])));
01051     printf ("%6i edges        %7i\n"
01052         ,numedges, (int)(numedges*sizeof(dedge_t)));
01053 //NEW
01054     printf ("%6i areas        %7i\n"
01055         ,numareas, (int)(numareas*sizeof(darea_t)));
01056     printf ("%6i areaportals  %7i\n"
01057         ,numareaportals, (int)(numareaportals*sizeof(dareaportal_t)));
01058 //ENDNEW
01059     printf ("      lightdata    %7i\n", lightdatasize);
01060     printf ("      visdata      %7i\n", visdatasize);
01061 } //end of the function Q2_PrintBSPFileSizes

Here is the call graph for this function:

void Q2_SwapBSPFile qboolean  todisk  ) 
 

Definition at line 643 of file l_bsp_q2.c.

References dleaf_t::area, dvis_t::bitofs, dnode_t::children, dleaf_t::cluster, dbrush_t::contents, dleaf_t::contents, d, dareaportals, dareas, dbrushes, dbrushsides, dedges, dfaces, dplane_t::dist, dleafbrushes, dleaffaces, dleafs, dmodels, dnodes, dplanes, dsurfedges, dvertexes, dvis, darea_t::firstareaportal, dface_t::firstedge, dnode_t::firstface, dmodel_t::firstface, dleaf_t::firstleafbrush, dleaf_t::firstleafface, dbrush_t::firstside, texinfo_s::flags, dmodel_t::headnode, i, j, dface_t::lightofs, LittleFloat(), LittleLong(), LittleShort(), dleaf_t::maxs, dnode_t::maxs, dmodel_t::maxs, dleaf_t::mins, dnode_t::mins, dmodel_t::mins, texinfo_s::nexttexinfo, dplane_t::normal, numareaportals, darea_t::numareaportals, dvis_t::numclusters, numedges, dface_t::numedges, numfaces, dnode_t::numfaces, dmodel_t::numfaces, numleafbrushes, dleaf_t::numleafbrushes, numleaffaces, dleaf_t::numleaffaces, dbrush_t::numsides, dmodel_t::origin, dareaportal_t::otherarea, dbrushside_t::planenum, dnode_t::planenum, dface_t::planenum, dvertex_t::point, dareaportal_t::portalnum, dface_t::side, dbrushside_t::texinfo, dface_t::texinfo, texinfo, dplane_t::type, v, dedge_t::v, texinfo_s::value, vecs, and texinfo_s::vecs.

Referenced by Q2_LoadBSPFile(), Q2_LoadBSPFileTexinfo(), and Q2_WriteBSPFile().

00644 {
00645     int             i, j;
00646     dmodel_t        *d;
00647 
00648     
00649 // models   
00650     for (i=0 ; i<nummodels ; i++)
00651     {
00652         d = &dmodels[i];
00653 
00654         d->firstface = LittleLong (d->firstface);
00655         d->numfaces = LittleLong (d->numfaces);
00656         d->headnode = LittleLong (d->headnode);
00657         
00658         for (j=0 ; j<3 ; j++)
00659         {
00660             d->mins[j] = LittleFloat(d->mins[j]);
00661             d->maxs[j] = LittleFloat(d->maxs[j]);
00662             d->origin[j] = LittleFloat(d->origin[j]);
00663         }
00664     }
00665 
00666 //
00667 // vertexes
00668 //
00669     for (i=0 ; i<numvertexes ; i++)
00670     {
00671         for (j=0 ; j<3 ; j++)
00672             dvertexes[i].point[j] = LittleFloat (dvertexes[i].point[j]);
00673     }
00674         
00675 //
00676 // planes
00677 //  
00678     for (i=0 ; i<numplanes ; i++)
00679     {
00680         for (j=0 ; j<3 ; j++)
00681             dplanes[i].normal[j] = LittleFloat (dplanes[i].normal[j]);
00682         dplanes[i].dist = LittleFloat (dplanes[i].dist);
00683         dplanes[i].type = LittleLong (dplanes[i].type);
00684     }
00685     
00686 //
00687 // texinfos
00688 //  
00689     for (i=0 ; i<numtexinfo ; i++)
00690     {
00691         for (j=0 ; j<8 ; j++)
00692             texinfo[i].vecs[0][j] = LittleFloat (texinfo[i].vecs[0][j]);
00693         texinfo[i].flags = LittleLong (texinfo[i].flags);
00694         texinfo[i].value = LittleLong (texinfo[i].value);
00695         texinfo[i].nexttexinfo = LittleLong (texinfo[i].nexttexinfo);
00696     }
00697     
00698 //
00699 // faces
00700 //
00701     for (i=0 ; i<numfaces ; i++)
00702     {
00703         dfaces[i].texinfo = LittleShort (dfaces[i].texinfo);
00704         dfaces[i].planenum = LittleShort (dfaces[i].planenum);
00705         dfaces[i].side = LittleShort (dfaces[i].side);
00706         dfaces[i].lightofs = LittleLong (dfaces[i].lightofs);
00707         dfaces[i].firstedge = LittleLong (dfaces[i].firstedge);
00708         dfaces[i].numedges = LittleShort (dfaces[i].numedges);
00709     }
00710 
00711 //
00712 // nodes
00713 //
00714     for (i=0 ; i<numnodes ; i++)
00715     {
00716         dnodes[i].planenum = LittleLong (dnodes[i].planenum);
00717         for (j=0 ; j<3 ; j++)
00718         {
00719             dnodes[i].mins[j] = LittleShort (dnodes[i].mins[j]);
00720             dnodes[i].maxs[j] = LittleShort (dnodes[i].maxs[j]);
00721         }
00722         dnodes[i].children[0] = LittleLong (dnodes[i].children[0]);
00723         dnodes[i].children[1] = LittleLong (dnodes[i].children[1]);
00724         dnodes[i].firstface = LittleShort (dnodes[i].firstface);
00725         dnodes[i].numfaces = LittleShort (dnodes[i].numfaces);
00726     }
00727 
00728 //
00729 // leafs
00730 //
00731     for (i=0 ; i<numleafs ; i++)
00732     {
00733         dleafs[i].contents = LittleLong (dleafs[i].contents);
00734         dleafs[i].cluster = LittleShort (dleafs[i].cluster);
00735         dleafs[i].area = LittleShort (dleafs[i].area);
00736         for (j=0 ; j<3 ; j++)
00737         {
00738             dleafs[i].mins[j] = LittleShort (dleafs[i].mins[j]);
00739             dleafs[i].maxs[j] = LittleShort (dleafs[i].maxs[j]);
00740         }
00741 
00742         dleafs[i].firstleafface = LittleShort (dleafs[i].firstleafface);
00743         dleafs[i].numleaffaces = LittleShort (dleafs[i].numleaffaces);
00744         dleafs[i].firstleafbrush = LittleShort (dleafs[i].firstleafbrush);
00745         dleafs[i].numleafbrushes = LittleShort (dleafs[i].numleafbrushes);
00746     }
00747 
00748 //
00749 // leaffaces
00750 //
00751     for (i=0 ; i<numleaffaces ; i++)
00752         dleaffaces[i] = LittleShort (dleaffaces[i]);
00753 
00754 //
00755 // leafbrushes
00756 //
00757     for (i=0 ; i<numleafbrushes ; i++)
00758         dleafbrushes[i] = LittleShort (dleafbrushes[i]);
00759 
00760 //
00761 // surfedges
00762 //
00763     for (i=0 ; i<numsurfedges ; i++)
00764         dsurfedges[i] = LittleLong (dsurfedges[i]);
00765 
00766 //
00767 // edges
00768 //
00769     for (i=0 ; i<numedges ; i++)
00770     {
00771         dedges[i].v[0] = LittleShort (dedges[i].v[0]);
00772         dedges[i].v[1] = LittleShort (dedges[i].v[1]);
00773     }
00774 
00775 //
00776 // brushes
00777 //
00778     for (i=0 ; i<numbrushes ; i++)
00779     {
00780         dbrushes[i].firstside = LittleLong (dbrushes[i].firstside);
00781         dbrushes[i].numsides = LittleLong (dbrushes[i].numsides);
00782         dbrushes[i].contents = LittleLong (dbrushes[i].contents);
00783     }
00784 
00785 //
00786 // areas
00787 //
00788     for (i=0 ; i<numareas ; i++)
00789     {
00790         dareas[i].numareaportals = LittleLong (dareas[i].numareaportals);
00791         dareas[i].firstareaportal = LittleLong (dareas[i].firstareaportal);
00792     }
00793 
00794 //
00795 // areasportals
00796 //
00797     for (i=0 ; i<numareaportals ; i++)
00798     {
00799         dareaportals[i].portalnum = LittleLong (dareaportals[i].portalnum);
00800         dareaportals[i].otherarea = LittleLong (dareaportals[i].otherarea);
00801     }
00802 
00803 //
00804 // brushsides
00805 //
00806     for (i=0 ; i<numbrushsides ; i++)
00807     {
00808         dbrushsides[i].planenum = LittleShort (dbrushsides[i].planenum);
00809         dbrushsides[i].texinfo = LittleShort (dbrushsides[i].texinfo);
00810     }
00811 
00812 //
00813 // visibility
00814 //
00815     if (todisk)
00816         j = dvis->numclusters;
00817     else
00818         j = LittleLong(dvis->numclusters);
00819     dvis->numclusters = LittleLong (dvis->numclusters);
00820     for (i=0 ; i<j ; i++)
00821     {
00822         dvis->bitofs[i][0] = LittleLong (dvis->bitofs[i][0]);
00823         dvis->bitofs[i][1] = LittleLong (dvis->bitofs[i][1]);
00824     }
00825 } //end of the function Q2_SwapBSPFile

Here is the call graph for this function:

void Q2_UnparseEntities void   ) 
 

Definition at line 1094 of file l_bsp_q2.c.

References entdatasize, entities, epair_t, entity_t::epairs, Error(), i, epair_s::key, line, epair_s::next, sprintf(), strcat(), strcpy(), StripTrailing(), strlen(), value, and epair_s::value.

Referenced by EndBSPFile().

01095 {
01096     char    *buf, *end;
01097     epair_t *ep;
01098     char    line[2048];
01099     int     i;
01100     char    key[1024], value[1024];
01101 
01102     buf = dentdata;
01103     end = buf;
01104     *end = 0;
01105     
01106     for (i=0 ; i<num_entities ; i++)
01107     {
01108         ep = entities[i].epairs;
01109         if (!ep)
01110             continue;   // ent got removed
01111         
01112         strcat (end,"{\n");
01113         end += 2;
01114                 
01115         for (ep = entities[i].epairs ; ep ; ep=ep->next)
01116         {
01117             strcpy (key, ep->key);
01118             StripTrailing (key);
01119             strcpy (value, ep->value);
01120             StripTrailing (value);
01121                 
01122             sprintf (line, "\"%s\" \"%s\"\n", key, value);
01123             strcat (end, line);
01124             end += strlen(line);
01125         }
01126         strcat (end,"}\n");
01127         end += 2;
01128 
01129         if (end > buf + MAX_MAP_ENTSTRING)
01130             Error ("Entity text too long");
01131     }
01132     entdatasize = end - buf + 1;
01133 } //end of the function Q2_UnparseEntities

Here is the call graph for this function:

void Q2_WriteBSPFile char *  filename  ) 
 

Definition at line 970 of file l_bsp_q2.c.

References BSPVERSION, dareaportals, dareas, dbrushes, dbrushsides, dedges, dentdata, dfaces, dleafbrushes, dleaffaces, dleafs, dlightdata, dmodels, dnodes, dplanes, dpop, dsurfedges, dvertexes, dvisdata, entdatasize, fclose(), fseek(), header, IDBSPHEADER, dheader_t::ident, lightdatasize, LittleLong(), LUMP_AREAPORTALS, LUMP_AREAS, LUMP_BRUSHES, LUMP_BRUSHSIDES, LUMP_EDGES, LUMP_ENTITIES, LUMP_FACES, LUMP_LEAFBRUSHES, LUMP_LEAFFACES, LUMP_LEAFS, LUMP_LIGHTING, LUMP_MODELS, LUMP_NODES, LUMP_PLANES, LUMP_POP, LUMP_SURFEDGES, LUMP_TEXINFO, LUMP_VERTEXES, LUMP_VISIBILITY, memset(), numareaportals, numareas, numbrushes, numbrushsides, numedges, numfaces, numleafbrushes, numleaffaces, numleafs, nummodels, numnodes, numplanes, numsurfedges, numtexinfo, numvertexes, Q2_AddLump(), Q2_SwapBSPFile(), SafeOpenWrite(), SafeWrite(), SEEK_SET, texinfo, texinfo_t, dheader_t::version, visdatasize, and wadfile.

00971 {       
00972     header = &outheader;
00973     memset (header, 0, sizeof(dheader_t));
00974     
00975     Q2_SwapBSPFile (true);
00976 
00977     header->ident = LittleLong (IDBSPHEADER);
00978     header->version = LittleLong (BSPVERSION);
00979     
00980     wadfile = SafeOpenWrite (filename);
00981     SafeWrite (wadfile, header, sizeof(dheader_t)); // overwritten later
00982 
00983     Q2_AddLump (LUMP_PLANES, dplanes, numplanes*sizeof(dplane_t));
00984     Q2_AddLump (LUMP_LEAFS, dleafs, numleafs*sizeof(dleaf_t));
00985     Q2_AddLump (LUMP_VERTEXES, dvertexes, numvertexes*sizeof(dvertex_t));
00986     Q2_AddLump (LUMP_NODES, dnodes, numnodes*sizeof(dnode_t));
00987     Q2_AddLump (LUMP_TEXINFO, texinfo, numtexinfo*sizeof(texinfo_t));
00988     Q2_AddLump (LUMP_FACES, dfaces, numfaces*sizeof(dface_t));
00989     Q2_AddLump (LUMP_BRUSHES, dbrushes, numbrushes*sizeof(dbrush_t));
00990     Q2_AddLump (LUMP_BRUSHSIDES, dbrushsides, numbrushsides*sizeof(dbrushside_t));
00991     Q2_AddLump (LUMP_LEAFFACES, dleaffaces, numleaffaces*sizeof(dleaffaces[0]));
00992     Q2_AddLump (LUMP_LEAFBRUSHES, dleafbrushes, numleafbrushes*sizeof(dleafbrushes[0]));
00993     Q2_AddLump (LUMP_SURFEDGES, dsurfedges, numsurfedges*sizeof(dsurfedges[0]));
00994     Q2_AddLump (LUMP_EDGES, dedges, numedges*sizeof(dedge_t));
00995     Q2_AddLump (LUMP_MODELS, dmodels, nummodels*sizeof(dmodel_t));
00996     Q2_AddLump (LUMP_AREAS, dareas, numareas*sizeof(darea_t));
00997     Q2_AddLump (LUMP_AREAPORTALS, dareaportals, numareaportals*sizeof(dareaportal_t));
00998 
00999     Q2_AddLump (LUMP_LIGHTING, dlightdata, lightdatasize);
01000     Q2_AddLump (LUMP_VISIBILITY, dvisdata, visdatasize);
01001     Q2_AddLump (LUMP_ENTITIES, dentdata, entdatasize);
01002     Q2_AddLump (LUMP_POP, dpop, sizeof(dpop));
01003     
01004     fseek (wadfile, 0, SEEK_SET);
01005     SafeWrite (wadfile, header, sizeof(dheader_t));
01006     fclose (wadfile);   
01007 } //end of the function Q2_WriteBSPFile

Here is the call graph for this function:

qboolean WindingIsTiny winding_t w  ) 
 

Definition at line 818 of file brushbsp.c.

00819 {
00820 #if 0
00821     if (WindingArea (w) < 1)
00822         return true;
00823     return false;
00824 #else
00825     int     i, j;
00826     vec_t   len;
00827     vec3_t  delta;
00828     int     edges;
00829 
00830     edges = 0;
00831     for (i=0 ; i<w->numpoints ; i++)
00832     {
00833         j = i == w->numpoints - 1 ? 0 : i+1;
00834         VectorSubtract (w->p[j], w->p[i], delta);
00835         len = VectorLength (delta);
00836         if (len > EDGE_LENGTH)
00837         {
00838             if (++edges == 3)
00839                 return false;
00840         }
00841     }
00842     return true;
00843 #endif
00844 } //end of the function WindingIsTiny


Variable Documentation

int allocatedbspmem = 0
 

Definition at line 149 of file l_bsp_q2.c.

Referenced by Q2_AllocMaxBSP(), and Q2_FreeMaxBSP().

char brushsidetextured[MAX_MAP_BRUSHSIDES]
 

Definition at line 144 of file l_bsp_q2.c.

Referenced by Q2_BSPBrushToMapBrush(), and Q2_FixTextureReferences().

int bspallocated = false
 

Definition at line 148 of file l_bsp_q2.c.

dareaportal_t* dareaportals
 

Definition at line 138 of file l_bsp_q2.c.

Referenced by Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_SwapBSPFile(), and Q2_WriteBSPFile().

darea_t* dareas
 

Definition at line 135 of file l_bsp_q2.c.

Referenced by Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_SwapBSPFile(), and Q2_WriteBSPFile().

dbrush_t* dbrushes
 

Definition at line 129 of file l_bsp_q2.c.

Referenced by EmitBrushes(), FindSkyBrushes(), LoadBSPFile(), Q2_AllocMaxBSP(), Q2_FixTextureReferences(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_ParseBSPBrushes(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), SwapBSPFile(), VL_CreateSkyLights(), VL_WindingAreaOutsideBrushes(), VS_CreateSkyLights(), VS_WindingAreaOutsideBrushes(), and WriteBSPFile().

dbrushside_t* dbrushsides
 

Definition at line 132 of file l_bsp_q2.c.

Referenced by EmitBrushes(), FindSkyBrushes(), LoadBSPFile(), Q2_AllocMaxBSP(), Q2_BrushSideWinding(), Q2_BSPBrushToMapBrush(), Q2_FixTextureReferences(), Q2_FreeMaxBSP(), Q2_HintSkipBrush(), Q2_LoadBSPFile(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), SwapBSPFile(), VL_ChopWindingWithBrush(), VL_CreateSkyLights(), VL_WindingForBrushSide(), VS_ChopWindingWithBrush(), VS_CreateSkyLights(), VS_WindingForBrushSide(), and WriteBSPFile().

dedge_t* dedges
 

Definition at line 117 of file l_bsp_q2.c.

Referenced by GetEdge2(), InsideFace(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_SwapBSPFile(), and Q2_WriteBSPFile().

char* dentdata
 

Definition at line 95 of file l_bsp_q2.c.

Referenced by LoadBSPFile(), ParseEntities(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_ParseEntities(), Q2_WriteBSPFile(), and WriteBSPFile().

dface_t* dfaces
 

Definition at line 114 of file l_bsp_q2.c.

Referenced by EmitFace(), MarkVisibleBrushSides(), Q2_AllocMaxBSP(), Q2_FixTextureReferences(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_SwapBSPFile(), and Q2_WriteBSPFile().

unsigned short* dleafbrushes
 

Definition at line 123 of file l_bsp_q2.c.

Referenced by EmitLeaf(), LoadBSPFile(), PrintBSPFileSizes(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_SetLeafBrushesModelNumbers(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), SwapBSPFile(), VL_R_WindingAreaOutsideSolid(), VS_R_WindingAreaOutsideSolid(), and WriteBSPFile().

unsigned short* dleaffaces
 

Definition at line 120 of file l_bsp_q2.c.

Referenced by EmitMarkFace(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_SwapBSPFile(), and Q2_WriteBSPFile().

dleaf_t* dleafs
 

Definition at line 98 of file l_bsp_q2.c.

Referenced by BeginBSPFile(), EmitLeaf(), LoadBSPFile(), MakeTnode(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_SetLeafBrushesModelNumbers(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), SaveClusters_r(), SwapBSPFile(), TraceLine(), VL_FloodDirectedLight(), VL_FloodLight(), VL_PointInLeafnum_r(), VL_R_LinkSurface(), VL_R_SubdivideAreaSpotLight(), VL_R_SubdivideDirectedAreaLight(), VL_R_SubdivideRadialAreaLight(), VL_R_WindingAreaOutsideSolid(), VL_TestLightLeafs(), VS_FloodDirectedLight(), VS_FloodLight(), VS_PointInLeafnum_r(), VS_R_LinkSurface(), VS_R_SubdivideAreaSpotLight(), VS_R_SubdivideDirectedAreaLight(), VS_R_SubdivideRadialAreaLight(), VS_R_WindingAreaOutsideSolid(), VS_TestLightLeafs(), and WriteBSPFile().

byte* dlightdata
 

Definition at line 92 of file l_bsp_q2.c.

Referenced by Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), and Q2_WriteBSPFile().

dmodel_t* dmodels
 

Definition at line 85 of file l_bsp_q2.c.

Referenced by BeginModel(), EndModel(), LoadBSPFile(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_SetBrushModelNumbers(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), SetEntityOrigins(), SetupGrid(), SwapBSPFile(), WriteBSP(), and WriteBSPFile().

dnode_t* dnodes
 

Definition at line 107 of file l_bsp_q2.c.

Referenced by EmitDrawNode_r(), LoadBSPFile(), MakeTnode(), PointInLeafnum(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_SetBrushModelNumbers(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), SwapBSPFile(), VL_PointInLeafnum_r(), VL_R_LinkSurface(), VL_R_SubdivideAreaSpotLight(), VL_R_SubdivideDirectedAreaLight(), VL_R_SubdivideRadialAreaLight(), VL_R_WindingAreaOutsideSolid(), VS_PointInLeafnum_r(), VS_R_LinkSurface(), VS_R_SubdivideAreaSpotLight(), VS_R_SubdivideDirectedAreaLight(), VS_R_SubdivideRadialAreaLight(), VS_R_WindingAreaOutsideSolid(), and WriteBSPFile().

dplane_t* dplanes
 

Definition at line 101 of file l_bsp_q2.c.

Referenced by DPlanes2MapPlanes(), EmitPlanes(), FindSkyBrushes(), InsideFace(), InsideWinding(), LoadBSPFile(), MakeTnode(), PointInLeafnum(), Q2_AllocMaxBSP(), Q2_BrushSideWinding(), Q2_BSPBrushToMapBrush(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), SwapBSPFile(), VL_ChopWindingWithBrush(), VL_CreateSkyLights(), VL_PointInLeafnum_r(), VL_R_LinkSurface(), VL_R_SubdivideAreaSpotLight(), VL_R_SubdivideDirectedAreaLight(), VL_R_SubdivideRadialAreaLight(), VL_R_WindingAreaOutsideSolid(), VL_WindingForBrushSide(), VS_ChopWindingWithBrush(), VS_CreateSkyLights(), VS_PointInLeafnum_r(), VS_R_LinkSurface(), VS_R_SubdivideAreaSpotLight(), VS_R_SubdivideDirectedAreaLight(), VS_R_SubdivideRadialAreaLight(), VS_R_WindingAreaOutsideSolid(), VS_WindingForBrushSide(), and WriteBSPFile().

byte dpop[MAX_MAP_DPOP]
 

Definition at line 141 of file l_bsp_q2.c.

Referenced by EndBSPFile(), Q2_LoadBSPFile(), and Q2_WriteBSPFile().

int* dsurfedges
 

Definition at line 126 of file l_bsp_q2.c.

Referenced by EmitFace(), InsideFace(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_SwapBSPFile(), and Q2_WriteBSPFile().

dvertex_t* dvertexes
 

Definition at line 104 of file l_bsp_q2.c.

Referenced by EmitFaceVertexes(), FixFaceEdges(), GetVertexnum(), InsideFace(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), and TestEdge().

dvis_t* dvis
 

Definition at line 89 of file l_bsp_q2.c.

Referenced by Q2_AllocMaxBSP(), Q2_CompressVis(), Q2_DecompressVis(), Q2_FreeMaxBSP(), and Q2_SwapBSPFile().

byte* dvisdata
 

Definition at line 88 of file l_bsp_q2.c.

Referenced by Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), and Q2_WriteBSPFile().

int entdatasize
 

Definition at line 94 of file l_bsp_q2.c.

Referenced by LoadBSPFile(), ParseEntities(), PrintBSPFileSizes(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_ParseEntities(), Q2_PrintBSPFileSizes(), Q2_UnparseEntities(), Q2_WriteBSPFile(), UnparseEntities(), and WriteBSPFile().

dheader_t* header
 

Definition at line 828 of file l_bsp_q2.c.

Referenced by AAS_LoadAASFile(), AAS_WriteAASFile(), AddLump(), CM_Checksum(), CM_LoadMap(), CopyLump(), LoadBSPFile(), LoadModel(), Q2_AddLump(), Q2_CopyLump(), Q2_LoadBSPFile(), Q2_LoadBSPFileTexinfo(), Q2_WriteBSPFile(), Q3_AddLump(), Q3_CopyLump(), Q3_LoadBSPFile(), Q3_WriteBSPFile(), R_AddAnimSurfaces(), R_AddMD3Surfaces(), R_ComputeFogNum(), R_CullModel(), R_ModelBounds(), RB_SurfaceAnim(), RE_LoadWorldMap(), Sin_AddLump(), Sin_CopyLump(), Sin_LoadBSPFile(), Sin_LoadBSPFileTexinfo(), Sin_WriteBSPFile(), VM_Compile(), VM_Create(), VM_PrepareInterpreter(), VM_Restart(), WriteBMP(), and WriteBSPFile().

int lightdatasize
 

Definition at line 91 of file l_bsp_q2.c.

Referenced by Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), and Q2_WriteBSPFile().

int numareaportals
 

Definition at line 137 of file l_bsp_q2.c.

Referenced by Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), and Sin_SwapBSPFile().

int numareas
 

Definition at line 134 of file l_bsp_q2.c.

Referenced by AAS_CheckAreaForPossiblePortals(), AAS_ClientMovementPrediction(), AAS_ConnectedAreas(), AAS_ConnectedAreas_r(), AAS_GetAdjacentAreasWithLessPresenceTypes_r(), AAS_InitMaxAAS(), AAS_InitReachabilityAreas(), AAS_Reachability_FuncBobbing(), AAS_Reachability_Grapple(), AAS_Reachability_Jump(), AAS_Reachability_Step_Barrier_WaterJump_WalkOffLedge(), AAS_Reachability_WalkOffLedge(), AAS_TraceAreas(), BotFuncButtonActivateGoal(), BotFuzzyPointReachabilityArea(), BotGetActivateGoal(), BotGoalForBSPEntity(), BotMoveToGoal(), BotPointAreaNum(), BotTriggerMultipleActivateGoal(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), and Q2_WriteBSPFile().

int numbrushes
 

Definition at line 128 of file l_bsp_q2.c.

Referenced by CSG_Subtract(), EmitBrushes(), EndModel(), HL_TextureBrushes(), LoadBSPFile(), PrintBSPFileSizes(), Q1_TextureBrushes(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_WriteBSPFile(), SwapBSPFile(), and WriteBSPFile().

int numbrushsides
 

Definition at line 131 of file l_bsp_q2.c.

Referenced by BeginBSPFile(), EmitBrushes(), LoadBSPFile(), PrintBSPFileSizes(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_WriteBSPFile(), SwapBSPFile(), and WriteBSPFile().

int numedges
 

Definition at line 116 of file l_bsp_q2.c.

Referenced by BeginBSPFile(), GetEdge2(), HL_SwapBSPFile(), Q1_SwapBSPFile(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), and Sin_SwapBSPFile().

int numfaces
 

Definition at line 113 of file l_bsp_q2.c.

Referenced by AAS_InitMaxAAS(), BeginBSPFile(), EmitDrawNode_r(), EmitFace(), EndModel(), HL_SwapBSPFile(), LoadPortals(), Q1_SwapBSPFile(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), Sin_SwapBSPFile(), VL_LoadPortals(), VS_LoadPortals(), and WriteBSP().

int numleafbrushes
 

Definition at line 122 of file l_bsp_q2.c.

Referenced by BeginBSPFile(), EmitLeaf(), LoadBSPFile(), PrintBSPFileSizes(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), Sin_SwapBSPFile(), SwapBSPFile(), and WriteBSPFile().

int numleaffaces
 

Definition at line 119 of file l_bsp_q2.c.

Referenced by BeginBSPFile(), EmitLeaf(), EmitMarkFace(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), and Sin_SwapBSPFile().

int numleafs
 

Definition at line 97 of file l_bsp_q2.c.

Referenced by BeginBSPFile(), EmitDrawNode_r(), EmitLeaf(), LoadBSPFile(), PrintBSPFileSizes(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_WriteBSPFile(), SwapBSPFile(), and WriteBSPFile().

int nummodels
 

Definition at line 84 of file l_bsp_q2.c.

Referenced by BeginBSPFile(), BeginModel(), EndModel(), LoadBSPFile(), PrintBSPFileSizes(), ProcessModels(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_WriteBSPFile(), SwapBSPFile(), and WriteBSPFile().

int numnodes
 

Definition at line 106 of file l_bsp_q2.c.

Referenced by BeginBSPFile(), EmitDrawNode_r(), LoadBSPFile(), PrintBSPFileSizes(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_WriteBSPFile(), SwapBSPFile(), and WriteBSPFile().

int numplanes
 

Definition at line 100 of file l_bsp_q2.c.

Referenced by EmitPlanes(), LoadBSPFile(), PM_SlideMove(), PrintBSPFileSizes(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), Q2_WriteBSPFile(), SwapBSPFile(), VL_R_FloodLight(), VS_R_FloodLight(), and WriteBSPFile().

int numsurfedges
 

Definition at line 125 of file l_bsp_q2.c.

Referenced by BeginBSPFile(), EmitFace(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), and Q2_WriteBSPFile().

int numtexinfo
 

Definition at line 110 of file l_bsp_q2.c.

Referenced by Q2_LoadBSPFile(), Q2_LoadBSPFileTexinfo(), Q2_PrintBSPFileSizes(), Q2_WriteBSPFile(), and TexinfoForBrushTexture().

int numvertexes
 

Definition at line 103 of file l_bsp_q2.c.

Referenced by BeginBSPFile(), EmitFaceVertexes(), FindEdgeVerts(), GetVertexnum(), Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), and Q2_WriteBSPFile().

dheader_t outheader
 

Definition at line 950 of file l_bsp_q2.c.

texinfo_t texinfo[MAX_MAP_TEXINFO]
 

Definition at line 111 of file l_bsp_q2.c.

Referenced by HL_SwapBSPFile(), Q1_SwapBSPFile(), Q2_BrushContents(), Q2_BSPBrushToMapBrush(), Q2_CreateMapTexinfo(), Q2_HintSkipBrush(), Q2_LoadBSPFile(), Q2_LoadBSPFileTexinfo(), Q2_SwapBSPFile(), Q2_WriteBSPFile(), Sin_BrushContents(), Sin_SwapBSPFile(), SubdivideFace(), and TestExpandBrushes().

int visdatasize
 

Definition at line 87 of file l_bsp_q2.c.

Referenced by Q2_AllocMaxBSP(), Q2_FreeMaxBSP(), Q2_LoadBSPFile(), Q2_PrintBSPFileSizes(), and Q2_WriteBSPFile().

FILE* wadfile
 

Definition at line 949 of file l_bsp_q2.c.


Generated on Thu Aug 25 12:53:27 2005 for Quake III Arena by  doxygen 1.3.9.1