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;
-
-const int BSP_IDENT = ( ( 'P' << 24 ) + ( 'S' << 16 ) + ( 'B' << 8 ) + 'I' );
+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;
+
+const int BSP_IDENT = (('P' << 24) + ('S' << 16) + ('B' << 8) + 'I');
const int Q3_BSP_VERSION = 46;
const int WOLF_BSP_VERSION = 47;
FileLength
================
*/
-int FileLength( FILE *f ){
- int pos;
- int end;
+int FileLength(FILE *f)
+{
+ int pos;
+ int end;
- pos = ftell( f );
- fseek( f, 0, SEEK_END );
- end = ftell( f );
- fseek( f, pos, SEEK_SET );
+ pos = ftell(f);
+ fseek(f, 0, SEEK_END);
+ end = ftell(f);
+ fseek(f, pos, SEEK_SET);
- return end;
+ return end;
}
/*
LoadFile
==============
*/
-bool LoadFile( const char *filename, byte **bufferptr ){
- FILE *f;
- int length;
- byte *buffer;
-
- f = fopen( filename, "rb" );
- if ( !f ) {
- return false;
- }
-
- length = FileLength( f );
- buffer = new byte[length + 1];
- buffer[length] = 0;
- fread( buffer, 1, length, f );
- fclose( f );
-
- *bufferptr = buffer;
- return true;
+bool LoadFile(const char *filename, byte **bufferptr)
+{
+ FILE *f;
+ int length;
+ byte *buffer;
+
+ f = fopen(filename, "rb");
+ if (!f) {
+ return false;
+ }
+
+ length = FileLength(f);
+ buffer = new byte[length + 1];
+ buffer[length] = 0;
+ fread(buffer, 1, length, f);
+ fclose(f);
+
+ *bufferptr = buffer;
+ return true;
}
-int LittleLong( int l ){
- if (GDEF_ARCH_ENDIAN_BIG) {
- std::reverse(reinterpret_cast<unsigned char *>( &l ), reinterpret_cast<unsigned char *>( &l ) + sizeof(int));
- }
- return l;
+int LittleLong(int l)
+{
+ if (GDEF_ARCH_ENDIAN_BIG) {
+ std::reverse(reinterpret_cast<unsigned char *>( &l ), reinterpret_cast<unsigned char *>( &l ) + sizeof(int));
+ }
+ return l;
}
-float LittleFloat( float l ){
- if (GDEF_ARCH_ENDIAN_BIG) {
- std::reverse( reinterpret_cast<unsigned char*>( &l ), reinterpret_cast<unsigned char*>( &l ) + sizeof( float ) );
- }
- return l;
+float LittleFloat(float l)
+{
+ if (GDEF_ARCH_ENDIAN_BIG) {
+ std::reverse(reinterpret_cast<unsigned char *>( &l ), reinterpret_cast<unsigned char *>( &l ) + sizeof(float));
+ }
+ return l;
}
/*
If all values are 32 bits, this can be used to swap everything
=============
*/
-void SwapBlock( int *block, int sizeOfBlock ) {
- int i;
-
- sizeOfBlock >>= 2;
- for ( i = 0 ; i < sizeOfBlock ; i++ ) {
- block[i] = LittleLong( block[i] );
- }
+void SwapBlock(int *block, int sizeOfBlock)
+{
+ int i;
+
+ sizeOfBlock >>= 2;
+ for (i = 0; i < sizeOfBlock; i++) {
+ block[i] = LittleLong(block[i]);
+ }
}
/*
Byte swaps all data in a bsp file.
=============
*/
-void SwapBSPFile( void ) {
- int i;
+void SwapBSPFile(void)
+{
+ int i;
- // models
+ // models
// SwapBlock( (int *)dmodels, nummodels * sizeof( dmodels[0] ) );
- // shaders (don't swap the name)
+ // shaders (don't swap the name)
// for ( i = 0 ; i < numShaders ; i++ ) {
// dshaders[i].contentFlags = LittleLong( dshaders[i].contentFlags );
// dshaders[i].surfaceFlags = LittleLong( dshaders[i].surfaceFlags );
// }
- // planes
- SwapBlock( (int *)dplanes, numplanes * sizeof( dplanes[0] ) );
+ // planes
+ SwapBlock((int *) dplanes, numplanes * sizeof(dplanes[0]));
- // nodes
- SwapBlock( (int *)dnodes, numnodes * sizeof( dnodes[0] ) );
+ // nodes
+ SwapBlock((int *) dnodes, numnodes * sizeof(dnodes[0]));
- // leafs
- SwapBlock( (int *)dleafs, numleafs * sizeof( dleafs[0] ) );
+ // leafs
+ SwapBlock((int *) dleafs, numleafs * sizeof(dleafs[0]));
- // leaffaces
- SwapBlock( (int *)dleafsurfaces, numleafsurfaces * sizeof( dleafsurfaces[0] ) );
+ // leaffaces
+ SwapBlock((int *) dleafsurfaces, numleafsurfaces * sizeof(dleafsurfaces[0]));
- // leafbrushes
- SwapBlock( (int *)dleafbrushes, numleafbrushes * sizeof( dleafbrushes[0] ) );
+ // leafbrushes
+ SwapBlock((int *) dleafbrushes, numleafbrushes * sizeof(dleafbrushes[0]));
- // brushes
- SwapBlock( (int *)dbrushes, numbrushes * sizeof( dbrushes[0] ) );
+ // brushes
+ SwapBlock((int *) dbrushes, numbrushes * sizeof(dbrushes[0]));
- // brushsides
- SwapBlock( (int *)dbrushsides, numbrushsides * sizeof( dbrushsides[0] ) );
+ // brushsides
+ SwapBlock((int *) dbrushsides, numbrushsides * sizeof(dbrushsides[0]));
- // vis
- ( (int *)&visBytes )[0] = LittleLong( ( (int *)&visBytes )[0] );
- ( (int *)&visBytes )[1] = LittleLong( ( (int *)&visBytes )[1] );
+ // vis
+ ((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++ ) {
- drawVerts[i].lightmap[0] = LittleFloat( drawVerts[i].lightmap[0] );
- drawVerts[i].lightmap[1] = LittleFloat( drawVerts[i].lightmap[1] );
- drawVerts[i].st[0] = LittleFloat( drawVerts[i].st[0] );
- drawVerts[i].st[1] = LittleFloat( drawVerts[i].st[1] );
- drawVerts[i].xyz[0] = LittleFloat( drawVerts[i].xyz[0] );
- drawVerts[i].xyz[1] = LittleFloat( drawVerts[i].xyz[1] );
- drawVerts[i].xyz[2] = LittleFloat( drawVerts[i].xyz[2] );
- drawVerts[i].normal[0] = LittleFloat( drawVerts[i].normal[0] );
- drawVerts[i].normal[1] = LittleFloat( drawVerts[i].normal[1] );
- drawVerts[i].normal[2] = LittleFloat( drawVerts[i].normal[2] );
- }
+ // drawverts (don't swap colors )
+ for (i = 0; i < numDrawVerts; i++) {
+ drawVerts[i].lightmap[0] = LittleFloat(drawVerts[i].lightmap[0]);
+ drawVerts[i].lightmap[1] = LittleFloat(drawVerts[i].lightmap[1]);
+ drawVerts[i].st[0] = LittleFloat(drawVerts[i].st[0]);
+ drawVerts[i].st[1] = LittleFloat(drawVerts[i].st[1]);
+ drawVerts[i].xyz[0] = LittleFloat(drawVerts[i].xyz[0]);
+ drawVerts[i].xyz[1] = LittleFloat(drawVerts[i].xyz[1]);
+ drawVerts[i].xyz[2] = LittleFloat(drawVerts[i].xyz[2]);
+ drawVerts[i].normal[0] = LittleFloat(drawVerts[i].normal[0]);
+ drawVerts[i].normal[1] = LittleFloat(drawVerts[i].normal[1]);
+ drawVerts[i].normal[2] = LittleFloat(drawVerts[i].normal[2]);
+ }
- // drawindexes
+ // drawindexes
// SwapBlock( (int *)drawIndexes, numDrawIndexes * sizeof( drawIndexes[0] ) );
- // drawsurfs
- SwapBlock( (int *)drawSurfaces, numDrawSurfaces * sizeof( drawSurfaces[0] ) );
+ // drawsurfs
+ SwapBlock((int *) drawSurfaces, numDrawSurfaces * sizeof(drawSurfaces[0]));
- // fogs
+ // fogs
// for ( i = 0 ; i < numFogs ; i++ ) {
// dfogs[i].brushNum = LittleLong( dfogs[i].brushNum );
// dfogs[i].visibleSide = LittleLong( dfogs[i].visibleSide );
CopyLump
=============
*/
-int CopyLump( dheader_t *header, int lump, void **dest, int size ) {
- int length, ofs;
+int CopyLump(dheader_t *header, int lump, void **dest, int size)
+{
+ int length, ofs;
- length = header->lumps[lump].filelen;
- ofs = header->lumps[lump].fileofs;
+ length = header->lumps[lump].filelen;
+ ofs = header->lumps[lump].fileofs;
- if ( length == 0 ) {
- return 0;
- }
+ if (length == 0) {
+ return 0;
+ }
- *dest = new byte[length];
- memcpy( *dest, (byte *)header + ofs, length );
+ *dest = new byte[length];
+ memcpy(*dest, (byte *) header + ofs, length);
- return length / size;
+ return length / size;
}
/*
LoadBSPFile
=============
*/
-bool LoadBSPFile( const char *filename ) {
- dheader_t *header;
-
- // load the file header
- if ( !LoadFile( filename, (byte **)&header ) ) {
- return false;
- }
-
- // swap the header
- SwapBlock( (int *)header, sizeof( *header ) );
-
- if ( header->ident != BSP_IDENT ) {
- 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 );
- 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
-
- // swap everything
- SwapBSPFile();
-
- return true;
+bool LoadBSPFile(const char *filename)
+{
+ dheader_t *header;
+
+ // load the file header
+ if (!LoadFile(filename, (byte **) &header)) {
+ return false;
+ }
+
+ // swap the header
+ SwapBlock((int *) header, sizeof(*header));
+
+ if (header->ident != BSP_IDENT) {
+ 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);
+ 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
+
+ // swap everything
+ SwapBSPFile();
+
+ return true;
}
-void FreeBSPData(){
- if ( visBytes ) {
- delete visBytes;
- }
- if ( dnodes ) {
- delete dnodes;
- }
- if ( dplanes ) {
- delete dplanes;
- }
- if ( dleafs ) {
- delete dleafs;
- }
- if ( drawVerts ) {
- delete drawVerts;
- }
- if ( drawSurfaces ) {
- delete drawSurfaces;
- }
- if ( dleafsurfaces ) {
- delete dleafsurfaces;
- }
- if ( dleafbrushes ) {
- delete dleafbrushes;
- }
- if ( dbrushes ) {
- delete dbrushes;
- }
- if ( dbrushsides ) {
- delete dbrushsides;
- }
+void FreeBSPData()
+{
+ if (visBytes) {
+ delete visBytes;
+ }
+ if (dnodes) {
+ delete dnodes;
+ }
+ if (dplanes) {
+ delete dplanes;
+ }
+ if (dleafs) {
+ delete dleafs;
+ }
+ if (drawVerts) {
+ delete drawVerts;
+ }
+ if (drawSurfaces) {
+ delete drawSurfaces;
+ }
+ if (dleafsurfaces) {
+ delete dleafsurfaces;
+ }
+ if (dleafbrushes) {
+ delete dleafbrushes;
+ }
+ if (dbrushes) {
+ delete dbrushes;
+ }
+ if (dbrushsides) {
+ delete dbrushsides;
+ }
}