X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=tools%2Fquake2%2Fq2map%2Fmain.c;h=dbd8c0de90499432655ab886da5200fffb3cbfdd;hb=830125fad042fad35dc029b6eb57c8156ad7e176;hp=810205a571677eddb8331f56fccb396714ef3ecd;hpb=515673c08f8718a237e90c2130a1f5294f966d6a;p=xonotic%2Fnetradiant.git diff --git a/tools/quake2/q2map/main.c b/tools/quake2/q2map/main.c index 810205a5..dbd8c0de 100644 --- a/tools/quake2/q2map/main.c +++ b/tools/quake2/q2map/main.c @@ -1,23 +1,23 @@ /* -Copyright (C) 1999-2007 id Software, Inc. and contributors. -For a list of contributors, see the accompanying CONTRIBUTORS file. + Copyright (C) 1999-2007 id Software, Inc. and contributors. + For a list of contributors, see the accompanying CONTRIBUTORS file. -This file is part of GtkRadiant. + This file is part of GtkRadiant. -GtkRadiant is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + GtkRadiant is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. -GtkRadiant is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + GtkRadiant is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with GtkRadiant; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ + You should have received a copy of the GNU General Public License + along with GtkRadiant; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ /* marker */ @@ -31,134 +31,133 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define qtrue true #define qfalse false -char *mapname; -char game[64]; -extern qboolean verbose; - -/// BSP -extern qboolean drawflag; -extern qboolean noprune; -extern qboolean glview; -extern qboolean nodetail; -extern qboolean fulldetail; -extern qboolean onlyents; -extern qboolean nomerge; -extern qboolean nowater; -extern qboolean nofill; -extern qboolean nocsg; -extern qboolean noweld; -extern qboolean noshare; -extern qboolean nosubdiv; -extern qboolean notjunc; -extern qboolean noopt; -extern qboolean leaktest; -extern qboolean verboseentities; -extern char outbase[32]; -extern int block_xl, block_xh, block_yl, block_yh; -extern vec_t microvolume; -extern float subdivide_size; +char *mapname; +char game[64]; +extern qboolean verbose; + +/// BSP +extern qboolean drawflag; +extern qboolean noprune; +extern qboolean glview; +extern qboolean nodetail; +extern qboolean fulldetail; +extern qboolean onlyents; +extern qboolean nomerge; +extern qboolean nowater; +extern qboolean nofill; +extern qboolean nocsg; +extern qboolean noweld; +extern qboolean noshare; +extern qboolean nosubdiv; +extern qboolean notjunc; +extern qboolean noopt; +extern qboolean leaktest; +extern qboolean verboseentities; +extern char outbase[32]; +extern int block_xl, block_xh, block_yl, block_yh; +extern vec_t microvolume; +extern float subdivide_size; // VIS -extern char inbase[32]; -extern qboolean fastvis; -extern qboolean nosort; -extern int testlevel; +extern char inbase[32]; +extern qboolean fastvis; +extern qboolean nosort; +extern int testlevel; // RAD -extern qboolean dumppatches; -extern int numbounce; -extern qboolean extrasamples; -extern float subdiv; -extern float lightscale; -extern float direct_scale; -extern float entity_scale; -extern qboolean nopvs; -extern float ambient; -extern float maxlight; +extern qboolean dumppatches; +extern int numbounce; +extern qboolean extrasamples; +extern float subdiv; +extern float lightscale; +extern float direct_scale; +extern float entity_scale; +extern qboolean nopvs; +extern float ambient; +extern float maxlight; void InitPaths( int *argc, char **argv ); /* -Random() -returns a pseudorandom number between 0 and 1 -*/ + Random() + returns a pseudorandom number between 0 and 1 + */ /* -vec_t Random( void ) -{ - return (vec_t) rand() / RAND_MAX; -} -*/ + vec_t Random( void ) + { + return (vec_t) rand() / RAND_MAX; + } + */ /* -ExitQ2Map() -cleanup routine -*/ + ExitQ2Map() + cleanup routine + */ /* -static void ExitQ2Map( void ) -{ - BSPFilesCleanup(); - if( mapDrawSurfs != NULL ) - free( mapDrawSurfs ); -} -*/ + static void ExitQ2Map( void ) + { + BSPFilesCleanup(); + if( mapDrawSurfs != NULL ) + free( mapDrawSurfs ); + } + */ /* -BSPInfo() -emits statistics about the bsp file -*/ - -int BSPInfo() -{ - char source[ 1024 ], ext[ 64 ]; - int size; - FILE *f; - - Sys_Printf ("\n----- INFO ----\n\n"); - + BSPInfo() + emits statistics about the bsp file + */ + +int BSPInfo(){ + char source[ 1024 ], ext[ 64 ]; + int size; + FILE *f; + + Sys_Printf( "\n----- INFO ----\n\n" ); + /* dummy check */ - if( mapname == NULL ) - { - Sys_Printf( "No files to dump info for.\n"); + if ( mapname == NULL ) { + Sys_Printf( "No files to dump info for.\n" ); return -1; } - + /* enable info mode */ //infoMode = qtrue; - - + + /* mangle filename and get size */ strcpy( source, mapname ); ExtractFileExtension( source, ext ); - if( !Q_stricmp( ext, "map" ) ) + if ( !Q_stricmp( ext, "map" ) ) { StripExtension( source ); + } DefaultExtension( source, ".bsp" ); f = fopen( source, "rb" ); - if( f ) - { - size = Q_filelength (f); + if ( f ) { + size = Q_filelength( f ); fclose( f ); } - else + else{ size = 0; - + } + /* load the bsp file and print lump sizes */ Sys_Printf( "Map: %s\n\n", source ); - + Sys_Printf( "-----------------------------------------------------\n" ); - - LoadBSPFile( source ); + + LoadBSPFile( source ); PrintBSPFileSizes(); - + Sys_Printf( "-----------------------------------------------------\n" ); - + /* print sizes */ - Sys_Printf( "Total: %d B = %.3f kB = %.3f MB\n", size, size / 1024.0, size / (1024.0 * 1024.0) ); - + Sys_Printf( "Total: %d B = %.3f kB = %.3f MB\n", size, size / 1024.0, size / ( 1024.0 * 1024.0 ) ); + Sys_Printf( "-----------------------------------------------------\n" ); - + /* return count */ return 0; } @@ -166,435 +165,404 @@ int BSPInfo() /* -ScaleBSPMain() -amaze and confuse your enemies with wierd scaled maps! -*/ + ScaleBSPMain() + amaze and confuse your enemies with wierd scaled maps! + */ /* -int ScaleBSPMain( int argc, char **argv ) -{ - int i; - float f, scale; - vec3_t vec; - char str[ 1024 ]; - - - // arg checking - if( argc < 2 ) - { - Sys_Printf( "Usage: q3map -scale [-v] \n" ); - return 0; - } - - // get scale - scale = atof( argv[ argc - 2 ] ); - if( scale == 0.0f ) - { - Sys_Printf( "Usage: q3map -scale [-v] \n" ); - Sys_Printf( "Non-zero scale value required.\n" ); - return 0; - } - - // do some path mangling - strcpy( source, ExpandArg( argv[ argc - 1 ] ) ); - StripExtension( source ); - DefaultExtension( source, ".bsp" ); - - // load the bsp - Sys_Printf( "Loading %s\n", source ); - LoadBSPFile( source ); - ParseEntities(); - - // note it - Sys_Printf( "--- ScaleBSP ---\n" ); - Sys_FPrintf( SYS_VRB, "%9d entities\n", numEntities ); - - // scale entity keys - for( i = 0; i < numBSPEntities && i < numEntities; i++ ) - { - // scale origin - GetVectorForKey( &entities[ i ], "origin", vec ); - if( (vec[ 0 ] + vec[ 1 ] + vec[ 2 ]) ) - { - VectorScale( vec, scale, vec ); - sprintf( str, "%f %f %f", vec[ 0 ], vec[ 1 ], vec[ 2 ] ); - SetKeyValue( &entities[ i ], "origin", str ); - } - - // scale door lip - f = FloatForKey( &entities[ i ], "lip" ); - if( f ) - { - f *= scale; - sprintf( str, "%f", f ); - SetKeyValue( &entities[ i ], "lip", str ); - } - } - - // scale models - for( i = 0; i < numBSPModels; i++ ) - { - VectorScale( bspModels[ i ].mins, scale, bspModels[ i ].mins ); - VectorScale( bspModels[ i ].maxs, scale, bspModels[ i ].maxs ); - } - - // scale nodes - for( i = 0; i < numBSPNodes; i++ ) - { - VectorScale( bspNodes[ i ].mins, scale, bspNodes[ i ].mins ); - VectorScale( bspNodes[ i ].maxs, scale, bspNodes[ i ].maxs ); - } - - // scale leafs - for( i = 0; i < numBSPLeafs; i++ ) - { - VectorScale( bspLeafs[ i ].mins, scale, bspLeafs[ i ].mins ); - VectorScale( bspLeafs[ i ].maxs, scale, bspLeafs[ i ].maxs ); - } - - // scale drawverts - for( i = 0; i < numBSPDrawVerts; i++ ) - VectorScale( bspDrawVerts[ i ].xyz, scale, bspDrawVerts[ i ].xyz ); - - // scale planes - for( i = 0; i < numBSPPlanes; i++ ) - bspPlanes[ i ].dist *= scale; - - // scale gridsize - GetVectorForKey( &entities[ 0 ], "gridsize", vec ); - if( (vec[ 0 ] + vec[ 1 ] + vec[ 2 ]) == 0.0f ) - VectorCopy( gridSize, vec ); - VectorScale( vec, scale, vec ); - sprintf( str, "%f %f %f", vec[ 0 ], vec[ 1 ], vec[ 2 ] ); - SetKeyValue( &entities[ 0 ], "gridsize", str ); - - // write the bsp - UnparseEntities(); - StripExtension( source ); - DefaultExtension( source, "_s.bsp" ); - Sys_Printf( "Writing %s\n", source ); - WriteBSPFile( source ); - - // return to sender - return 0; -} -*/ + int ScaleBSPMain( int argc, char **argv ) + { + int i; + float f, scale; + vec3_t vec; + char str[ 1024 ]; + + + // arg checking + if( argc < 2 ) + { + Sys_Printf( "Usage: q3map -scale [-v] \n" ); + return 0; + } + + // get scale + scale = atof( argv[ argc - 2 ] ); + if( scale == 0.0f ) + { + Sys_Printf( "Usage: q3map -scale [-v] \n" ); + Sys_Printf( "Non-zero scale value required.\n" ); + return 0; + } + + // do some path mangling + strcpy( source, ExpandArg( argv[ argc - 1 ] ) ); + StripExtension( source ); + DefaultExtension( source, ".bsp" ); + + // load the bsp + Sys_Printf( "Loading %s\n", source ); + LoadBSPFile( source ); + ParseEntities(); + + // note it + Sys_Printf( "--- ScaleBSP ---\n" ); + Sys_FPrintf( SYS_VRB, "%9d entities\n", numEntities ); + + // scale entity keys + for( i = 0; i < numBSPEntities && i < numEntities; i++ ) + { + // scale origin + GetVectorForKey( &entities[ i ], "origin", vec ); + if( (vec[ 0 ] + vec[ 1 ] + vec[ 2 ]) ) + { + VectorScale( vec, scale, vec ); + sprintf( str, "%f %f %f", vec[ 0 ], vec[ 1 ], vec[ 2 ] ); + SetKeyValue( &entities[ i ], "origin", str ); + } + + // scale door lip + f = FloatForKey( &entities[ i ], "lip" ); + if( f ) + { + f *= scale; + sprintf( str, "%f", f ); + SetKeyValue( &entities[ i ], "lip", str ); + } + } + + // scale models + for( i = 0; i < numBSPModels; i++ ) + { + VectorScale( bspModels[ i ].mins, scale, bspModels[ i ].mins ); + VectorScale( bspModels[ i ].maxs, scale, bspModels[ i ].maxs ); + } + + // scale nodes + for( i = 0; i < numBSPNodes; i++ ) + { + VectorScale( bspNodes[ i ].mins, scale, bspNodes[ i ].mins ); + VectorScale( bspNodes[ i ].maxs, scale, bspNodes[ i ].maxs ); + } + + // scale leafs + for( i = 0; i < numBSPLeafs; i++ ) + { + VectorScale( bspLeafs[ i ].mins, scale, bspLeafs[ i ].mins ); + VectorScale( bspLeafs[ i ].maxs, scale, bspLeafs[ i ].maxs ); + } + + // scale drawverts + for( i = 0; i < numBSPDrawVerts; i++ ) + VectorScale( bspDrawVerts[ i ].xyz, scale, bspDrawVerts[ i ].xyz ); + + // scale planes + for( i = 0; i < numBSPPlanes; i++ ) + bspPlanes[ i ].dist *= scale; + + // scale gridsize + GetVectorForKey( &entities[ 0 ], "gridsize", vec ); + if( (vec[ 0 ] + vec[ 1 ] + vec[ 2 ]) == 0.0f ) + VectorCopy( gridSize, vec ); + VectorScale( vec, scale, vec ); + sprintf( str, "%f %f %f", vec[ 0 ], vec[ 1 ], vec[ 2 ] ); + SetKeyValue( &entities[ 0 ], "gridsize", str ); + + // write the bsp + UnparseEntities(); + StripExtension( source ); + DefaultExtension( source, "_s.bsp" ); + Sys_Printf( "Writing %s\n", source ); + WriteBSPFile( source ); + + // return to sender + return 0; + } + */ /* -ConvertBSPMain() -main argument processing function for bsp conversion -*/ + ConvertBSPMain() + main argument processing function for bsp conversion + */ /* -int ConvertBSPMain( int argc, char **argv ) -{ - int i; - int (*convertFunc)( char * ); - - - // set default - convertFunc = ConvertBSPToASE; - - // arg checking - if( argc < 1 ) - { - Sys_Printf( "Usage: q3map -scale [-v] \n" ); - return 0; - } - - // process arguments - for( i = 1; i < (argc - 1); i++ ) - { - // -format map|ase|... - if( !strcmp( argv[ i ], "-format" ) ) - { - i++; - if( !Q_stricmp( argv[ i ], "ase" ) ) - convertFunc = ConvertBSPToASE; - else if( !Q_stricmp( argv[ i ], "map" ) ) - convertFunc = ConvertBSPToMap; - else - Sys_Printf( "Unknown conversion format \"%s\". Defaulting to ASE.\n", argv[ i ] ); - } - } - - // clean up map name - strcpy( source, ExpandArg( argv[ i ] ) ); - StripExtension( source ); - DefaultExtension( source, ".bsp" ); - - LoadShaderInfo(); - - Sys_Printf( "Loading %s\n", source ); - - // ydnar: load surface file - //% LoadSurfaceExtraFile( source ); - - LoadBSPFile( source ); - - // parse bsp entities - ParseEntities(); - - // convert - return convertFunc( source ); -} -*/ - -int Check_BSP_Options( int argc, char **argv ) -{ + int ConvertBSPMain( int argc, char **argv ) + { + int i; + int (*convertFunc)( char * ); + + + // set default + convertFunc = ConvertBSPToASE; + + // arg checking + if( argc < 1 ) + { + Sys_Printf( "Usage: q3map -scale [-v] \n" ); + return 0; + } + + // process arguments + for( i = 1; i < (argc - 1); i++ ) + { + // -format map|ase|... + if( !strcmp( argv[ i ], "-format" ) ) + { + i++; + if( !Q_stricmp( argv[ i ], "ase" ) ) + convertFunc = ConvertBSPToASE; + else if( !Q_stricmp( argv[ i ], "map" ) ) + convertFunc = ConvertBSPToMap; + else + Sys_Printf( "Unknown conversion format \"%s\". Defaulting to ASE.\n", argv[ i ] ); + } + } + + // clean up map name + strcpy( source, ExpandArg( argv[ i ] ) ); + StripExtension( source ); + DefaultExtension( source, ".bsp" ); + + LoadShaderInfo(); + + Sys_Printf( "Loading %s\n", source ); + + // ydnar: load surface file + //% LoadSurfaceExtraFile( source ); + + LoadBSPFile( source ); + + // parse bsp entities + ParseEntities(); + + // convert + return convertFunc( source ); + } + */ + +int Check_BSP_Options( int argc, char **argv ){ int i; - - for (i=1 ; i 59 ) - Sys_Printf("%d Minutes ", total_time/60 ); - Sys_Printf( "%d Seconds\n", total_time%60 ); - + total_time = (int) ( end - start ); + Sys_Printf( "\nTotal Time: " ); + if ( total_time > 59 ) { + Sys_Printf( "%d Minutes ", total_time / 60 ); + } + Sys_Printf( "%d Seconds\n", total_time % 60 ); + /* shut down connection */ Broadcast_Shutdown(); - + /* return any error code */ return r; }