int BspMain(int argc, char **argv) { int i; double start, end; char path[1024]; Sys_Printf("---- bsp ----\n"); for(i = 1; i < argc; i++) { if(!strcmp(argv[i], "-threads")) { numthreads = atoi(argv[i + 1]); i++; } else if(!strcmp(argv[i], "-glview")) { glview = qtrue; } else if(!strcmp(argv[i], "-v")) { Sys_Printf("verbose = true\n"); verbose = qtrue; } else if(!strcmp(argv[i], "-draw")) { Sys_Printf("drawflag = true\n"); drawFlag = qtrue; } else if(!strcmp(argv[i], "-debugsurfaces")) { Sys_Printf("emitting debug surfaces\n"); debugSurfaces = qtrue; } else if(!strcmp(argv[i], "-nowater")) { Sys_Printf("nowater = true\n"); noliquids = qtrue; } else if(!strcmp(argv[i], "-nodetail")) { Sys_Printf("nodetail = true\n"); nodetail = qtrue; } else if(!strcmp(argv[i], "-fulldetail")) { Sys_Printf("fulldetail = true\n"); fulldetail = qtrue; } else if(!strcmp(argv[i], "-onlyents")) { Sys_Printf("onlyents = true\n"); onlyents = qtrue; } else if(!strcmp(argv[i], "-onlytextures")) { Sys_Printf("onlytextures = true\n"); // FIXME: make work again! onlytextures = qtrue; } else if(!strcmp(argv[i], "-micro")) { microvolume = atof(argv[i + 1]); Sys_Printf("microvolume = %f\n", microvolume); i++; } else if(!strcmp(argv[i], "-nofog")) { Sys_Printf("nofog = true\n"); nofog = qtrue; } else if(!strcmp(argv[i], "-nosubdivide")) { Sys_Printf("nosubdivide = true\n"); nosubdivide = qtrue; } else if(!strcmp(argv[i], "-leaktest")) { Sys_Printf("leaktest = true\n"); leaktest = qtrue; } else if(!strcmp(argv[i], "-nocurves")) { nocurves = qtrue; Sys_Printf("no curve brushes\n"); } else if(!strcmp(argv[i], "-nodoors")) { nodoors = qtrue; Sys_Printf("no door entities\n"); } else if(!strcmp(argv[i], "-notjunc")) { notjunc = qtrue; Sys_Printf("no tjunction fixing\n"); } else if(!strcmp(argv[i], "-expand")) { testExpand = qtrue; Sys_Printf("Writing expanded.map.\n"); } else if(!strcmp(argv[i], "-showseams")) { showseams = qtrue; Sys_Printf("Showing seams on terrain.\n"); } else if(!strcmp(argv[i], "-tmpout")) { strcpy(outbase, "/tmp"); } else if(!strcmp(argv[i], "-fakemap")) { fakemap = qtrue; Sys_Printf("will generate fakemap.map\n"); } else if(!strcmp(argv[i], "-samplesize")) { samplesize = atoi(argv[i + 1]); if(samplesize < 1) samplesize = 1; i++; Sys_Printf("lightmap sample size is %dx%d units\n", samplesize, samplesize); } else if(!strcmp(argv[i], "-connect")) { Broadcast_Setup(argv[++i]); } else if(argv[i][0] == '-') Error("Unknown option \"%s\"", argv[i]); else break; } if(i != argc - 1) { Error("usage: xmap -map2bsp [-<switch> [-<switch> ...]] <mapname.map>\n" "\n" "Switches:\n" " v = verbose output\n" " threads <X> = set number of threads to X\n" " nocurves = don't emit bezier surfaces\n" " nodoors = disable door entities\n" //" breadthfirst = breadth first bsp building\n" //" nobrushmerge = don't merge brushes\n" " noliquids = don't write liquids to map\n" //" nocsg = disables brush chopping\n" //" glview = output a GL view\n" " draw = enables mini BSP viewer\n" //" noweld = disables weld\n" //" noshare = disables sharing\n" " notjunc = disables juncs\n" " nowater = disables water brushes\n" //" noprune = disables node prunes\n" //" nomerge = disables face merging\n" " nofog = disables fogs\n" " nosubdivide = disables subdivision of draw surfaces\n" " nodetail = disables detail brushes\n" " fulldetail = enables full detail\n" " onlyents = only compile entities with bsp\n" " micro <volume>\n" " = sets the micro volume to the given float\n" " leaktest = perform a leak test\n" //" chop <subdivide_size>\n" //" = sets the subdivide size to the given float\n" " samplesize <N> = set the lightmap pixel size to NxN units\n"); } start = I_FloatTime(); ThreadSetDefault(); SetQdirFromPath(argv[i]); strcpy(source, ExpandArg(argv[i])); StripExtension(source); // delete portal and line files sprintf(path, "%s.prt", source); remove(path); sprintf(path, "%s.lin", source); remove(path); strcpy(name, ExpandArg(argv[i])); if(strcmp(name + strlen(name) - 4, ".reg")) { // if we are doing a full map, delete the last saved region map sprintf(path, "%s.reg", source); remove(path); DefaultExtension(name, ".map"); // might be .reg } // if onlyents, just grab the entites and resave if(onlyents) { OnlyEnts(); // shut down connection Broadcast_Shutdown(); return 0; } // if onlytextures, just grab the textures and resave if(onlytextures) { OnlyTextures(); // shut down connection Broadcast_Shutdown(); return 0; } // start from scratch LoadShaderInfo(); LoadMapFile(name); ProcessModels(); SetModelNumbers(); EndBSPFile(); end = I_FloatTime(); Sys_Printf("%5.0f seconds elapsed\n", end - start); // shut down connection Broadcast_Shutdown(); return 0; }
int main( int argc, char **argv ){ int i, r; double start, end; /* we want consistent 'randomness' */ srand( 0 ); /* start timer */ start = I_FloatTime(); /* this was changed to emit version number over the network */ printf( Q3MAP_VERSION "\n" ); /* set exit call */ atexit( ExitQ3Map ); /* read general options first */ for ( i = 1; i < argc; i++ ) { /* -connect */ if ( !strcmp( argv[ i ], "-connect" ) ) { argv[ i ] = NULL; i++; Broadcast_Setup( argv[ i ] ); argv[ i ] = NULL; } /* verbose */ else if ( !strcmp( argv[ i ], "-v" ) ) { verbose = qtrue; argv[ i ] = NULL; } /* force */ else if ( !strcmp( argv[ i ], "-force" ) ) { force = qtrue; argv[ i ] = NULL; } /* patch subdivisions */ else if ( !strcmp( argv[ i ], "-subdivisions" ) ) { argv[ i ] = NULL; i++; patchSubdivisions = atoi( argv[ i ] ); argv[ i ] = NULL; if ( patchSubdivisions <= 0 ) { patchSubdivisions = 1; } } /* threads */ else if ( !strcmp( argv[ i ], "-threads" ) ) { argv[ i ] = NULL; i++; numthreads = atoi( argv[ i ] ); argv[ i ] = NULL; } } /* init model library */ PicoInit(); PicoSetMallocFunc( safe_malloc ); PicoSetFreeFunc( free ); PicoSetPrintFunc( PicoPrintFunc ); PicoSetLoadFileFunc( PicoLoadFileFunc ); PicoSetFreeFileFunc( free ); /* set number of threads */ ThreadSetDefault(); /* generate sinusoid jitter table */ for ( i = 0; i < MAX_JITTERS; i++ ) { jitters[ i ] = sin( i * 139.54152147 ); //% Sys_Printf( "Jitter %4d: %f\n", i, jitters[ i ] ); } /* we print out two versions, q3map's main version (since it evolves a bit out of GtkRadiant) and we put the GtkRadiant version to make it easy to track with what version of Radiant it was built with */ Sys_Printf( "Q3Map - v1.0r (c) 1999 Id Software Inc.\n" ); Sys_Printf( "Q3Map (ydnar) - v" Q3MAP_VERSION "\n" ); Sys_Printf( "GtkRadiant - v" RADIANT_VERSION " " __DATE__ " " __TIME__ "\n" ); Sys_Printf( "%s\n", Q3MAP_MOTD ); /* ydnar: new path initialization */ InitPaths( &argc, argv ); /* check if we have enough options left to attempt something */ if ( argc < 2 ) { Error( "Usage: %s [general options] [options] mapfile", argv[ 0 ] ); } /* fixaas */ if ( !strcmp( argv[ 1 ], "-fixaas" ) ) { r = FixAAS( argc - 1, argv + 1 ); } /* analyze */ else if ( !strcmp( argv[ 1 ], "-analyze" ) ) { r = AnalyzeBSP( argc - 1, argv + 1 ); } /* info */ else if ( !strcmp( argv[ 1 ], "-info" ) ) { r = BSPInfo( argc - 2, argv + 2 ); } /* vis */ else if ( !strcmp( argv[ 1 ], "-vis" ) ) { r = VisMain( argc - 1, argv + 1 ); } /* light */ else if ( !strcmp( argv[ 1 ], "-light" ) ) { r = LightMain( argc - 1, argv + 1 ); } /* vlight */ else if ( !strcmp( argv[ 1 ], "-vlight" ) ) { Sys_Printf( "WARNING: VLight is no longer supported, defaulting to -light -fast instead\n\n" ); argv[ 1 ] = "-fast"; /* eek a hack */ r = LightMain( argc, argv ); } /* ydnar: lightmap export */ else if ( !strcmp( argv[ 1 ], "-export" ) ) { r = ExportLightmapsMain( argc - 1, argv + 1 ); } /* ydnar: lightmap import */ else if ( !strcmp( argv[ 1 ], "-import" ) ) { r = ImportLightmapsMain( argc - 1, argv + 1 ); } /* ydnar: bsp scaling */ else if ( !strcmp( argv[ 1 ], "-scale" ) ) { r = ScaleBSPMain( argc - 1, argv + 1 ); } /* ydnar: bsp conversion */ else if ( !strcmp( argv[ 1 ], "-convert" ) ) { r = ConvertBSPMain( argc - 1, argv + 1 ); } /* ydnar: otherwise create a bsp */ else{ r = BSPMain( argc, argv ); } /* emit time */ end = I_FloatTime(); Sys_Printf( "%9.0f seconds elapsed\n", end - start ); /* shut down connection */ Broadcast_Shutdown(); /* return any error code */ return r; }
int ConvertMapToMap(int argc, char **argv) { int i; double start, end; char source[1024]; char name[1024]; char save[1024]; Sys_Printf("---- convert map to map ----\n"); for(i = 1; i < argc; i++) { if(!strcmp(argv[i], "-threads")) { numthreads = atoi(argv[i + 1]); i++; } else if(!strcmp(argv[i], "-v")) { Sys_Printf("verbose = true\n"); verbose = qtrue; } else if(!strcmp(argv[i], "-quake3")) { convertType = CONVERT_QUAKE3; Sys_Printf("converting from Quake3 to XreaL\n"); } else if(!strcmp(argv[i], "-quake4")) { convertType = CONVERT_QUAKE4; Sys_Printf("converting from Quake4 to XreaL\n"); } else if(!strcmp(argv[i], "-connect")) { Broadcast_Setup(argv[++i]); } else if(argv[i][0] == '-') Error("Unknown option \"%s\"", argv[i]); else break; } if(i != argc - 1) { Error("usage: xmap -map2map [-<switch> [-<switch> ...]] <mapname.map>\n" "\n" "Switches:\n" " v = verbose output\n" //" quake1 = convert from QuakeWorld to XreaL\n" //" quake2 = convert from Quake2 to XreaL\n" " quake3 = convert from Quake3 to XreaL\n" " quake4 = convert from Quake4 to XreaL\n"); } start = I_FloatTime(); ThreadSetDefault(); SetQdirFromPath(argv[i]); strcpy(source, ExpandArg(argv[i])); StripExtension(source); strcpy(name, ExpandArg(argv[i])); DefaultExtension(name, ".map"); // start from scratch LoadShaderInfo(); LoadMapFile(name); // strcpy(save, ExpandArg(argv[i])); StripExtension(save); strcat(save, "_converted"); DefaultExtension(save, ".map"); WriteMapFile(save); end = I_FloatTime(); Sys_Printf("%5.0f seconds elapsed\n", end - start); // shut down connection Broadcast_Shutdown(); return 0; }