diff --git a/common/bspfile.c b/common/bspfile.c index a7647764..317718f8 100644 --- a/common/bspfile.c +++ b/common/bspfile.c @@ -68,6 +68,105 @@ unsigned short *dmarksurfaces; int numsurfedges; int *dsurfedges; +/* Transitional helper functions */ +void +GetBSPGlobals(bspdata_t *bspdata) +{ + bspdata->nummodels = nummodels; + bspdata->dmodels = dmodels; + + bspdata->visdatasize = visdatasize; + bspdata->dvisdata = dvisdata; + + bspdata->lightdatasize = lightdatasize; + bspdata->dlightdata = dlightdata; + + bspdata->texdatasize = texdatasize; + bspdata->dtexdata = dtexdata; + + bspdata->entdatasize = entdatasize; + bspdata->dentdata = dentdata; + + bspdata->numleafs = numleafs; + bspdata->dleafs = dleafs; + + bspdata->numplanes = numplanes; + bspdata->dplanes = dplanes; + + bspdata->numvertexes = numvertexes; + bspdata->dvertexes = dvertexes; + + bspdata->numnodes = numnodes; + bspdata->dnodes = dnodes; + + bspdata->numtexinfo = numtexinfo; + bspdata->texinfo = texinfo; + + bspdata->numfaces = numfaces; + bspdata->dfaces = dfaces; + + bspdata->numclipnodes = numclipnodes; + bspdata->dclipnodes = dclipnodes; + + bspdata->numedges = numedges; + bspdata->dedges = dedges; + + bspdata->nummarksurfaces = nummarksurfaces; + bspdata->dmarksurfaces = dmarksurfaces; + + bspdata->numsurfedges = numsurfedges; + bspdata->dsurfedges = dsurfedges; +} + +void +SetBSPGlobals(const bspdata_t *bspdata) +{ + nummodels = bspdata->nummodels; + dmodels = bspdata->dmodels; + + visdatasize = bspdata->visdatasize; + dvisdata = bspdata->dvisdata; + + lightdatasize = bspdata->lightdatasize; + dlightdata = bspdata->dlightdata; + + texdatasize = bspdata->texdatasize; + dtexdata = bspdata->dtexdata; + + entdatasize = bspdata->entdatasize; + dentdata = bspdata->dentdata; + + numleafs = bspdata->numleafs; + dleafs = bspdata->dleafs; + + numplanes = bspdata->numplanes; + dplanes = bspdata->dplanes; + + numvertexes = bspdata->numvertexes; + dvertexes = bspdata->dvertexes; + + numnodes = bspdata->numnodes; + dnodes = bspdata->dnodes; + + numtexinfo = bspdata->numtexinfo; + texinfo = bspdata->texinfo; + + numfaces = bspdata->numfaces; + dfaces = bspdata->dfaces; + + numclipnodes = bspdata->numclipnodes; + dclipnodes = bspdata->dclipnodes; + + numedges = bspdata->numedges; + dedges = bspdata->dedges; + + nummarksurfaces = bspdata->nummarksurfaces; + dmarksurfaces = bspdata->dmarksurfaces; + + numsurfedges = bspdata->numsurfedges; + dsurfedges = bspdata->dsurfedges; +} + /* ========================================================================= */ typedef enum { TO_DISK, TO_CPU } swaptype_t; diff --git a/include/common/bspfile.h b/include/common/bspfile.h index a4f5c545..a3a0e228 100644 --- a/include/common/bspfile.h +++ b/include/common/bspfile.h @@ -205,8 +205,6 @@ typedef struct { /* ========================================================================= */ -/* the utilities get to be lazy and just use large static arrays */ - extern int nummodels; extern dmodel_t *dmodels; @@ -252,6 +250,57 @@ extern unsigned short *dmarksurfaces; extern int numsurfedges; extern int *dsurfedges; +/* TODO - Transition utils over to using an instanced struct for bsp data */ +typedef struct { + int nummodels; + dmodel_t *dmodels; + + int visdatasize; + byte *dvisdata; + + int lightdatasize; + byte *dlightdata; + + int texdatasize; + byte *dtexdata; /* (dmiptexlump_t) */ + + int entdatasize; + char *dentdata; + + int numleafs; + dleaf_t *dleafs; + + int numplanes; + dplane_t *dplanes; + + int numvertexes; + dvertex_t *dvertexes; + + int numnodes; + dnode_t *dnodes; + + int numtexinfo; + texinfo_t *texinfo; + + int numfaces; + dface_t *dfaces; + + int numclipnodes; + dclipnode_t *dclipnodes; + + int numedges; + dedge_t *dedges; + + int nummarksurfaces; + unsigned short *dmarksurfaces; + + int numsurfedges; + int *dsurfedges; +} bspdata_t; + +/* Transitional helper functions */ +void GetBSPGlobals(bspdata_t *bspdata); +void SetBSPGlobals(const bspdata_t *bspdata); /* LoadBSPFile returns the BSP version... */ int LoadBSPFile(const char *filename);