common: make LoadBSPFile take a bspdata struct

No longer update the globals in this function - make the callers do it
instead.

bspinfo no longer refers to the globals at all.

Signed-off-by: Kevin Shanahan <kmshanah@disenchant.net>
This commit is contained in:
Kevin Shanahan 2013-04-20 16:51:45 +09:30
parent 35024bfa7d
commit d14793f7ab
6 changed files with 32 additions and 32 deletions

View File

@ -40,10 +40,9 @@ main(int argc, char **argv)
DefaultExtension(source, ".bsp");
printf("%s\n", source);
LoadBSPFile(source);
GetBSPGlobals(&bsp);
LoadBSPFile(source, &bsp);
PrintBSPFileSizes(&bsp);
printf("---------------------\n");
}

View File

@ -96,10 +96,10 @@ ExportWad(FILE *f)
int
main(int argc, char **argv)
{
int i;
int err;
bspdata_t bsp;
char source[1024];
FILE *f;
int i, err;
printf("---- bsputil / TyrUtils " stringify(TYRUTILS_VERSION) " ----\n");
if (argc == 1) {
@ -113,7 +113,8 @@ main(int argc, char **argv)
printf("---------------------\n");
printf("%s\n", source);
LoadBSPFile(source);
LoadBSPFile(source, &bsp);
SetBSPGlobals(&bsp); /* FIXME */
for (i = 0; i < argc - 1; i++) {
if (!strcmp(argv[i], "--extract-entities")) {
@ -125,7 +126,7 @@ main(int argc, char **argv)
if (!f)
Error("couldn't open %s for writing\n", source);
err = fwrite(dentdata, sizeof(char), entdatasize - 1, f);
err = fwrite(bsp.dentdata, sizeof(char), bsp.entdatasize - 1, f);
if (err != entdatasize - 1)
Error("%s", strerror(errno));

View File

@ -354,9 +354,8 @@ CopyLump(const dheader_t *header, int lumpnum, void *destptr)
* =============
*/
int
LoadBSPFile(const char *filename)
LoadBSPFile(const char *filename, bspdata_t *bsp)
{
bspdata_t bsp;
dheader_t *header;
int i, version;
@ -376,32 +375,29 @@ LoadBSPFile(const char *filename)
}
/* copy the data */
memset(&bsp, 0, sizeof(bsp));
bsp.nummodels = CopyLump(header, LUMP_MODELS, &bsp.dmodels);
bsp.numvertexes = CopyLump(header, LUMP_VERTEXES, &bsp.dvertexes);
bsp.numplanes = CopyLump(header, LUMP_PLANES, &bsp.dplanes);
bsp.numleafs = CopyLump(header, LUMP_LEAFS, &bsp.dleafs);
bsp.numnodes = CopyLump(header, LUMP_NODES, &bsp.dnodes);
bsp.numtexinfo = CopyLump(header, LUMP_TEXINFO, &bsp.texinfo);
bsp.numclipnodes = CopyLump(header, LUMP_CLIPNODES, &bsp.dclipnodes);
bsp.numfaces = CopyLump(header, LUMP_FACES, &bsp.dfaces);
bsp.nummarksurfaces = CopyLump(header, LUMP_MARKSURFACES, &bsp.dmarksurfaces);
bsp.numsurfedges = CopyLump(header, LUMP_SURFEDGES, &bsp.dsurfedges);
bsp.numedges = CopyLump(header, LUMP_EDGES, &bsp.dedges);
memset(bsp, 0, sizeof(*bsp));
bsp->nummodels = CopyLump(header, LUMP_MODELS, &bsp->dmodels);
bsp->numvertexes = CopyLump(header, LUMP_VERTEXES, &bsp->dvertexes);
bsp->numplanes = CopyLump(header, LUMP_PLANES, &bsp->dplanes);
bsp->numleafs = CopyLump(header, LUMP_LEAFS, &bsp->dleafs);
bsp->numnodes = CopyLump(header, LUMP_NODES, &bsp->dnodes);
bsp->numtexinfo = CopyLump(header, LUMP_TEXINFO, &bsp->texinfo);
bsp->numclipnodes = CopyLump(header, LUMP_CLIPNODES, &bsp->dclipnodes);
bsp->numfaces = CopyLump(header, LUMP_FACES, &bsp->dfaces);
bsp->nummarksurfaces = CopyLump(header, LUMP_MARKSURFACES, &bsp->dmarksurfaces);
bsp->numsurfedges = CopyLump(header, LUMP_SURFEDGES, &bsp->dsurfedges);
bsp->numedges = CopyLump(header, LUMP_EDGES, &bsp->dedges);
bsp.texdatasize = CopyLump(header, LUMP_TEXTURES, &bsp.dtexdata.base);
bsp.visdatasize = CopyLump(header, LUMP_VISIBILITY, &bsp.dvisdata);
bsp.lightdatasize = CopyLump(header, LUMP_LIGHTING, &bsp.dlightdata);
bsp.entdatasize = CopyLump(header, LUMP_ENTITIES, &bsp.dentdata);
bsp->texdatasize = CopyLump(header, LUMP_TEXTURES, &bsp->dtexdata.base);
bsp->visdatasize = CopyLump(header, LUMP_VISIBILITY, &bsp->dvisdata);
bsp->lightdatasize = CopyLump(header, LUMP_LIGHTING, &bsp->dlightdata);
bsp->entdatasize = CopyLump(header, LUMP_ENTITIES, &bsp->dentdata);
/* everything has been copied out */
free(header);
/* swap everything */
SwapBSPFile(&bsp, TO_CPU);
/* Set the bsp globals for compatibility */
SetBSPGlobals(&bsp);
SwapBSPFile(bsp, TO_CPU);
/* Return the version */
return version;

View File

@ -308,7 +308,7 @@ void GetBSPGlobals(bspdata_t *bspdata);
void SetBSPGlobals(const bspdata_t *bspdata);
/* LoadBSPFile returns the BSP version... */
int LoadBSPFile(const char *filename);
int LoadBSPFile(const char *filename, bspdata_t *bsp);
void WriteBSPFile(const char *filename, bspdata_t *bsp, int version);
void PrintBSPFileSizes(const bspdata_t *bsp);

View File

@ -297,7 +297,8 @@ main(int argc, const char **argv)
strcpy(source, argv[i]);
StripExtension(source);
DefaultExtension(source, ".bsp");
bsp_version = LoadBSPFile(source);
bsp_version = LoadBSPFile(source, &bsp);
SetBSPGlobals(&bsp); /* FIXME */
LoadEntities();
MakeTnodes();
@ -308,6 +309,7 @@ main(int argc, const char **argv)
WriteEntitiesToString();
/* Still need to update from globals */
GetBSPGlobals(&bsp);
WriteBSPFile(source, &bsp, bsp_version);

View File

@ -1224,7 +1224,8 @@ main(int argc, char **argv)
StripExtension(sourcefile);
DefaultExtension(sourcefile, ".bsp");
bsp_version = LoadBSPFile(sourcefile);
bsp_version = LoadBSPFile(sourcefile, &bsp);
SetBSPGlobals(&bsp); /* FIXME */
strcpy(portalfile, argv[i]);
StripExtension(portalfile);
@ -1256,6 +1257,7 @@ main(int argc, char **argv)
CalcAmbientSounds();
/* still need to update from globals */
GetBSPGlobals(&bsp);
WriteBSPFile(sourcefile, &bsp, bsp_version);