diff --git a/bspinfo/bspinfo.c b/bspinfo/bspinfo.c index e1c9643b..e71238e8 100644 --- a/bspinfo/bspinfo.c +++ b/bspinfo/bspinfo.c @@ -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"); } diff --git a/bsputil/bsputil.c b/bsputil/bsputil.c index 9bfc0051..06c77754 100644 --- a/bsputil/bsputil.c +++ b/bsputil/bsputil.c @@ -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)); diff --git a/common/bspfile.c b/common/bspfile.c index 15d833e8..b54e6fe6 100644 --- a/common/bspfile.c +++ b/common/bspfile.c @@ -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; diff --git a/include/common/bspfile.h b/include/common/bspfile.h index 485020c9..81c98daa 100644 --- a/include/common/bspfile.h +++ b/include/common/bspfile.h @@ -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); diff --git a/light/light.c b/light/light.c index 0a0daae1..81ef2dc7 100644 --- a/light/light.c +++ b/light/light.c @@ -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); diff --git a/vis/vis.c b/vis/vis.c index 20cb92cd..64480539 100644 --- a/vis/vis.c +++ b/vis/vis.c @@ -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);