X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=contrib%2Fbobtoolz%2Fbsploader.cpp;h=6c8b09e90f185431e78c748a932e51eaf6e23527;hb=62d99f889c0e98be65f779d3983109c84ce58cec;hp=287c5fff468de67cf948d70906af2c7b06404006;hpb=231225d6f97d0b926b2e896e5783cccfbc7c5619;p=xonotic%2Fnetradiant.git diff --git a/contrib/bobtoolz/bsploader.cpp b/contrib/bobtoolz/bsploader.cpp index 287c5fff..6c8b09e9 100644 --- a/contrib/bobtoolz/bsploader.cpp +++ b/contrib/bobtoolz/bsploader.cpp @@ -2,100 +2,97 @@ #include "dialogs/dialogs-gtk.h" #include "cmdlib.h" -int numnodes; -int numplanes; -int numleafs; -int numleafsurfaces; -int numVisBytes; -int numDrawVerts; -int numDrawSurfaces; -int numbrushes; -int numbrushsides; -int numleafbrushes; - -byte *visBytes = NULL; -dnode_t *dnodes = NULL; -dplane_t *dplanes = NULL; -dleaf_t *dleafs = NULL; -qdrawVert_t *drawVerts = NULL; -dsurface_t *drawSurfaces = NULL; -int *dleafsurfaces = NULL; -dbrush_t *dbrushes = NULL; -dbrushside_t *dbrushsides = NULL; -int *dleafbrushes = NULL; - -#define BSP_IDENT (('P'<<24)+('S'<<16)+('B'<<8)+'I') -#define Q3_BSP_VERSION 46 -#define WOLF_BSP_VERSION 47 +int numnodes; +int numplanes; +int numleafs; +int numleafsurfaces; +int numVisBytes; +int numDrawVerts; +int numDrawSurfaces; +int numbrushes; +int numbrushsides; +int numleafbrushes; + +byte *visBytes = NULL; +dnode_t *dnodes = NULL; +dplane_t *dplanes = NULL; +dleaf_t *dleafs = NULL; +qdrawVert_t *drawVerts = NULL; +dsurface_t *drawSurfaces = NULL; +int *dleafsurfaces = NULL; +dbrush_t *dbrushes = NULL; +dbrushside_t *dbrushsides = NULL; +int *dleafbrushes = NULL; + +#define BSP_IDENT ( ( 'P' << 24 ) + ( 'S' << 16 ) + ( 'B' << 8 ) + 'I' ) +#define Q3_BSP_VERSION 46 +#define WOLF_BSP_VERSION 47 /* -================ -FileLength -================ -*/ -int FileLength (FILE *f) -{ - int pos; - int end; - - pos = ftell (f); - fseek (f, 0, SEEK_END); - end = ftell (f); - fseek (f, pos, SEEK_SET); + ================ + FileLength + ================ + */ +int FileLength( FILE *f ){ + int pos; + int end; + + pos = ftell( f ); + fseek( f, 0, SEEK_END ); + end = ftell( f ); + fseek( f, pos, SEEK_SET ); return end; } /* -============== -LoadFile -============== -*/ -bool LoadFile( const char *filename, byte **bufferptr) -{ - FILE *f; - int length; + ============== + LoadFile + ============== + */ +bool LoadFile( const char *filename, byte **bufferptr ){ + FILE *f; + int length; byte *buffer; - f = fopen(filename, "rb"); - if(!f) + f = fopen( filename, "rb" ); + if ( !f ) { return false; + } - length = FileLength (f); - buffer = new byte[length+1]; + length = FileLength( f ); + buffer = new byte[length + 1]; buffer[length] = 0; - fread(buffer, 1, length, f); - fclose (f); + fread( buffer, 1, length, f ); + fclose( f ); *bufferptr = buffer; return true; } -int LittleLong (int l) -{ -#if defined(__BIG_ENDIAN__) - std::reverse(reinterpret_cast(&l), reinterpret_cast(&l) + sizeof(int)); +int LittleLong( int l ){ +#if defined( __BIG_ENDIAN__ ) + std::reverse( reinterpret_cast( &l ), reinterpret_cast( &l ) + sizeof( int ) ); #endif return l; } -float LittleFloat (float l) -{ -#if defined(__BIG_ENDIAN__) - std::reverse(reinterpret_cast(&l), reinterpret_cast(&l) + sizeof(float)); +float LittleFloat( float l ){ +#if defined( __BIG_ENDIAN__ ) + std::reverse( reinterpret_cast( &l ), reinterpret_cast( &l ) + sizeof( float ) ); #endif return l; } /* -============= -SwapBlock + ============= + SwapBlock -If all values are 32 bits, this can be used to swap everything -============= -*/ + If all values are 32 bits, this can be used to swap everything + ============= + */ void SwapBlock( int *block, int sizeOfBlock ) { - int i; + int i; sizeOfBlock >>= 2; for ( i = 0 ; i < sizeOfBlock ; i++ ) { @@ -104,16 +101,16 @@ void SwapBlock( int *block, int sizeOfBlock ) { } /* -============= -SwapBSPFile + ============= + SwapBSPFile -Byte swaps all data in a bsp file. -============= -*/ + Byte swaps all data in a bsp file. + ============= + */ void SwapBSPFile( void ) { - int i; - - // models + int i; + + // models // SwapBlock( (int *)dmodels, nummodels * sizeof( dmodels[0] ) ); // shaders (don't swap the name) @@ -124,7 +121,7 @@ void SwapBSPFile( void ) { // planes SwapBlock( (int *)dplanes, numplanes * sizeof( dplanes[0] ) ); - + // nodes SwapBlock( (int *)dnodes, numnodes * sizeof( dnodes[0] ) ); @@ -144,8 +141,8 @@ void SwapBSPFile( void ) { SwapBlock( (int *)dbrushsides, numbrushsides * sizeof( dbrushsides[0] ) ); // vis - ((int *)&visBytes)[0] = LittleLong( ((int *)&visBytes)[0] ); - ((int *)&visBytes)[1] = LittleLong( ((int *)&visBytes)[1] ); + ( (int *)&visBytes )[0] = LittleLong( ( (int *)&visBytes )[0] ); + ( (int *)&visBytes )[1] = LittleLong( ( (int *)&visBytes )[1] ); // drawverts (don't swap colors ) for ( i = 0 ; i < numDrawVerts ; i++ ) { @@ -175,19 +172,20 @@ void SwapBSPFile( void ) { } /* -============= -CopyLump -============= -*/ -int CopyLump( dheader_t *header, int lump, void **dest, int size ) { - int length, ofs; + ============= + CopyLump + ============= + */ +int CopyLump( dheader_t *header, int lump, void **dest, int size ) { + int length, ofs; length = header->lumps[lump].filelen; ofs = header->lumps[lump].fileofs; - - if(length == 0) + + if ( length == 0 ) { return 0; - + } + *dest = new byte[length]; memcpy( *dest, (byte *)header + ofs, length ); @@ -195,69 +193,79 @@ int CopyLump( dheader_t *header, int lump, void **dest, int size ) { } /* -============= -LoadBSPFile -============= -*/ -bool LoadBSPFile( const char *filename ) { - dheader_t *header; + ============= + LoadBSPFile + ============= + */ +bool LoadBSPFile( const char *filename ) { + dheader_t *header; // load the file header - if(!LoadFile (filename, (byte **)&header)) + if ( !LoadFile( filename, (byte **)&header ) ) { return false; + } // swap the header - SwapBlock( (int *)header, sizeof(*header) ); + SwapBlock( (int *)header, sizeof( *header ) ); if ( header->ident != BSP_IDENT ) { - DoMessageBox( "Cant find a valid IBSP file", "Error", eMB_OK); + DoMessageBox( "Cant find a valid IBSP file", "Error", eMB_OK ); return false; } - if ( (header->version != Q3_BSP_VERSION) && - (header->version != WOLF_BSP_VERSION) ) { - DoMessageBox( "File is incorrect version", "Error", eMB_OK); + if ( ( header->version != Q3_BSP_VERSION ) && + ( header->version != WOLF_BSP_VERSION ) ) { + DoMessageBox( "File is incorrect version", "Error", eMB_OK ); return false; } - numbrushsides = CopyLump( header, LUMP_BRUSHES, (void**)&dbrushsides, sizeof(dbrushside_t) ); - numbrushes = CopyLump( header, LUMP_BRUSHES, (void**)&dbrushes, sizeof(dbrush_t) ); - numplanes = CopyLump( header, LUMP_PLANES, (void**)&dplanes, sizeof(dplane_t) ); - numleafs = CopyLump( header, LUMP_LEAFS, (void**)&dleafs, sizeof(dleaf_t) ); - numnodes = CopyLump( header, LUMP_NODES, (void**)&dnodes, sizeof(dnode_t) ); - numDrawVerts = CopyLump( header, LUMP_DRAWVERTS, (void**)&drawVerts, sizeof(qdrawVert_t) ); - numDrawSurfaces = CopyLump( header, LUMP_SURFACES, (void**)&drawSurfaces, sizeof(dsurface_t) ); - numleafsurfaces = CopyLump( header, LUMP_LEAFSURFACES, (void**)&dleafsurfaces, sizeof(int) ); - numVisBytes = CopyLump( header, LUMP_VISIBILITY, (void**)&visBytes, 1 ); - numleafbrushes = CopyLump( header, LUMP_LEAFBRUSHES, (void**)&dleafbrushes, sizeof(int) ); - - delete header; // everything has been copied out - + numbrushsides = CopyLump( header, LUMP_BRUSHES, (void**)&dbrushsides, sizeof( dbrushside_t ) ); + numbrushes = CopyLump( header, LUMP_BRUSHES, (void**)&dbrushes, sizeof( dbrush_t ) ); + numplanes = CopyLump( header, LUMP_PLANES, (void**)&dplanes, sizeof( dplane_t ) ); + numleafs = CopyLump( header, LUMP_LEAFS, (void**)&dleafs, sizeof( dleaf_t ) ); + numnodes = CopyLump( header, LUMP_NODES, (void**)&dnodes, sizeof( dnode_t ) ); + numDrawVerts = CopyLump( header, LUMP_DRAWVERTS, (void**)&drawVerts, sizeof( qdrawVert_t ) ); + numDrawSurfaces = CopyLump( header, LUMP_SURFACES, (void**)&drawSurfaces, sizeof( dsurface_t ) ); + numleafsurfaces = CopyLump( header, LUMP_LEAFSURFACES, (void**)&dleafsurfaces, sizeof( int ) ); + numVisBytes = CopyLump( header, LUMP_VISIBILITY, (void**)&visBytes, 1 ); + numleafbrushes = CopyLump( header, LUMP_LEAFBRUSHES, (void**)&dleafbrushes, sizeof( int ) ); + + delete header; // everything has been copied out + // swap everything SwapBSPFile(); return true; } -void FreeBSPData() -{ - if(visBytes) +void FreeBSPData(){ + if ( visBytes ) { delete visBytes; - if(dnodes) + } + if ( dnodes ) { delete dnodes; - if(dplanes) + } + if ( dplanes ) { delete dplanes; - if(dleafs) + } + if ( dleafs ) { delete dleafs; - if(drawVerts) + } + if ( drawVerts ) { delete drawVerts; - if(drawSurfaces) + } + if ( drawSurfaces ) { delete drawSurfaces; - if(dleafsurfaces) + } + if ( dleafsurfaces ) { delete dleafsurfaces; - if(dleafbrushes) + } + if ( dleafbrushes ) { delete dleafbrushes; - if(dbrushes) + } + if ( dbrushes ) { delete dbrushes; - if(dbrushsides) + } + if ( dbrushsides ) { delete dbrushsides; + } }