All pastes #1206850 Raw Edit

Something

public diff v1 · immutable
#1206850 ·published 2008-09-20 20:24 UTC
rendered paste body
Index: src/tools/ufo2map/ufo2map.c===================================================================--- src/tools/ufo2map/ufo2map.c	(revision 19297)+++ src/tools/ufo2map/ufo2map.c	(working copy)@@ -148,7 +148,7 @@ /**  * @brief Check for bsping, radiosity and checking/fixing command line parameters  */-static void U2M_Parameter (int argc, const char **argv)+static int U2M_Parameter (int argc, const char **argv) { 	int i; @@ -390,9 +390,15 @@ 			} else { 				Sys_Error("invalid parameter count\n"); 			}-		} else if (i < (argc - 1)) {-			/* Last param is the map path, every other param should have been caught by now. */+		} else if (!strcmp(argv[i],"--")) {+			/* End of options mapfiles coming */+			break;+		} else if (argv[i][0] == '-') {+			/* Unrecognized option */ 			Verb_Printf(VERB_LESS, "*** parameter not understood: %s try --help for more info\n", argv[i]);+		} else {+			/* End of options mapfiles coming */+			break; 		} 	} @@ -405,6 +411,8 @@ 		config.generateFootstepFile = qfalse; 		config.generateMaterialFile = qfalse; 	}++	return i; }  /**@@ -526,6 +534,7 @@ 	char bspFilename[MAX_OSPATH]; 	double begin, start, end; 	long size;+	int fileParam;  	memset(&config, 0, sizeof(config)); 	/* init thread state */@@ -533,7 +542,7 @@  	U2M_SetDefaultConfigValues(); -	U2M_Parameter(argc, argv);+	fileParam = U2M_Parameter(argc, argv);  	Verb_Printf(VERB_NORMAL, "---- ufo2map "VERSION" ----\n"); @@ -544,149 +553,151 @@  	Swap_Init(); -	start = time(NULL);+	while (fileParam < argc) {+		start = time(NULL); -	Verb_Printf(VERB_NORMAL, "path: '%s'\n", argv[argc - 1]);-	FS_Init(argv[argc - 1]);+		Verb_Printf(VERB_NORMAL, "path: '%s'\n", argv[fileParam]);+		FS_Init(argv[fileParam]); -	COM_StripExtension(COM_ExpandRelativePath(argv[argc - 1]), mapFilename, sizeof(mapFilename));-	strncpy(baseFilename, mapFilename, sizeof(baseFilename) - 1);-	strncpy(bspFilename, mapFilename, sizeof(bspFilename) - 1);-	COM_DefaultExtension(mapFilename, sizeof(mapFilename), ".map");-	COM_DefaultExtension(bspFilename, sizeof(bspFilename), ".bsp");+		COM_StripExtension(COM_ExpandRelativePath(argv[fileParam]), mapFilename, sizeof(mapFilename));+		strncpy(baseFilename, mapFilename, sizeof(baseFilename) - 1);+		strncpy(bspFilename, mapFilename, sizeof(bspFilename) - 1);+		COM_DefaultExtension(mapFilename, sizeof(mapFilename), ".map");+		COM_DefaultExtension(bspFilename, sizeof(bspFilename), ".bsp"); -	if (config.info) {-		LoadBSPFile(bspFilename);-		PrintBSPFileSizes();-		return 0;-	}+		if (config.info) {+			LoadBSPFile(bspFilename);+			PrintBSPFileSizes();+			return 0;+		} -	Verb_Printf(VERB_NORMAL, "...map: '%s'\n", mapFilename);-	if (!(config.performMapCheck || config.fixMap))-		Verb_Printf(VERB_NORMAL, "...bsp: '%s'\n", bspFilename);+		Verb_Printf(VERB_NORMAL, "...map: '%s'\n", mapFilename);+		if (!(config.performMapCheck || config.fixMap))+			Verb_Printf(VERB_NORMAL, "...bsp: '%s'\n", bspFilename); -	if (config.verbosity == VERB_MAPNAME && !(config.performMapCheck || config.fixMap))-		PrintName();+		if (config.verbosity == VERB_MAPNAME && !(config.performMapCheck || config.fixMap))+			PrintName(); -	if (config.onlynewer && CheckTimeDiff(mapFilename, bspFilename)) {-		Verb_Printf(VERB_LESS, "bsp file is up-to-date\n");-		return 0;-	}+		if (config.onlynewer && CheckTimeDiff(mapFilename, bspFilename)) {+			Verb_Printf(VERB_LESS, "bsp file is up-to-date\n");+			return 0;+		} -	/* if onlyents just grab the entites and resave */-	if (config.onlyents) {-		LoadBSPFile(bspFilename);-		num_entities = 0; /* use the map source entities */+		/* if onlyents just grab the entites and resave */+		if (config.onlyents) {+			LoadBSPFile(bspFilename);+			num_entities = 0; /* use the map source entities */ -		LoadMapFile(mapFilename);-		SetModelNumbers();+			LoadMapFile(mapFilename);+			SetModelNumbers(); -		UnparseEntities();+			UnparseEntities(); -		WriteBSPFile(bspFilename);-	} else if (config.performMapCheck || config.fixMap) {-		int i;-		Verb_Printf(VERB_NORMAL, "Starting map %s\n", config.fixMap ? "fixes" : "checks");-		LoadMapFile(mapFilename);-		/* level flags must be fixed before mixed face contents, or they swamp the-		 * console with output, as levelflags are contentflags */-		if (config.chkLevelFlags || config.chkBrushes || config.chkAll)-			CheckLevelFlags();-		if (config.chkFillLevelFlags || config.chkBrushes || config.chkAll)-			CheckFillLevelFlags();-		/* this must be before mfc check, as otherwise mfc warnings are given-		 * which are auto-fixed based on textures */-		if (config.chkTextures || config.chkBrushes || config.chkAll)-			CheckFlagsBasedOnTextures();-		/* mixed face contents check may remove contentflags. this should be done-		 * before tex based on flags check, as tex may replace tex on the basis-		 * of contentflags.*/-		if (config.chkMixedFaceContents || config.chkBrushes || config.chkAll)-			CheckMixedFaceContents();-		if (config.chkTextures || config.chkBrushes || config.chkAll)-			CheckTexturesBasedOnFlags();-		if (config.chkMMicro || config.chkBrushes || config.chkAll)-			CheckMapMicro();-		if (config.chkContained || config.chkBrushes || config.chkAll)-			Check_ContainedBrushes();-		if (config.chkBrushes || config.chkAll)-			CheckBrushes();-		/** @todo include in chkAll when it works */-		if (config.chkNodraws /* || config.chkAll */)-			CheckNodraws();-		if (config.chkZFight  || config.chkAll || config.chkBrushes)-			CheckZFighting();-		if (config.chkEntities || config.chkAll)-			CheckEntities();+			WriteBSPFile(bspFilename);+		} else if (config.performMapCheck || config.fixMap) {+			int i;+			Verb_Printf(VERB_NORMAL, "Starting map %s\n", config.fixMap ? "fixes" : "checks");+			LoadMapFile(mapFilename);+			/* level flags must be fixed before mixed face contents, or they swamp the+			 * console with output, as levelflags are contentflags */+			if (config.chkLevelFlags || config.chkBrushes || config.chkAll)+				CheckLevelFlags();+			if (config.chkFillLevelFlags || config.chkBrushes || config.chkAll)+				CheckFillLevelFlags();+			/* this must be before mfc check, as otherwise mfc warnings are given+			 * which are auto-fixed based on textures */+			if (config.chkTextures || config.chkBrushes || config.chkAll)+				CheckFlagsBasedOnTextures();+			/* mixed face contents check may remove contentflags. this should be done+			 * before tex based on flags check, as tex may replace tex on the basis+			 * of contentflags.*/+			if (config.chkMixedFaceContents || config.chkBrushes || config.chkAll)+				CheckMixedFaceContents();+			if (config.chkTextures || config.chkBrushes || config.chkAll)+				CheckTexturesBasedOnFlags();+			if (config.chkMMicro || config.chkBrushes || config.chkAll)+				CheckMapMicro();+			if (config.chkContained || config.chkBrushes || config.chkAll)+				Check_ContainedBrushes();+			if (config.chkBrushes || config.chkAll)+				CheckBrushes();+			/** @todo include in chkAll when it works */+			if (config.chkNodraws /* || config.chkAll */)+				CheckNodraws();+			if (config.chkZFight  || config.chkAll || config.chkBrushes)+				CheckZFighting();+			if (config.chkEntities || config.chkAll)+				CheckEntities(); -		/* not included in bru or all by design */-		if (config.chkIntersection)-			Check_BrushIntersection();-		if (config.chkRemoveStepons)-			Check_RemoveSteponBrushes();+			/* not included in bru or all by design */+			if (config.chkIntersection)+				Check_BrushIntersection();+			if (config.chkRemoveStepons)+				Check_RemoveSteponBrushes(); -		if (config.fixMap) {-			/* update dentdata */-			UnparseEntities();-			WriteMapFile(GetScriptFile());-		}+			if (config.fixMap) {+				/* update dentdata */+				UnparseEntities();+				WriteMapFile(GetScriptFile());+			} -		/* several of the check functions use nearBrushes list for speedup-		 * it can only be freed when the checks have finished */-		for (i = 0; i < nummapbrushes; i++) {-			mapbrush_t *iBrush = &mapbrushes[i];+			/* several of the check functions use nearBrushes list for speedup+			 * it can only be freed when the checks have finished */+			for (i = 0; i < nummapbrushes; i++) {+				mapbrush_t *iBrush = &mapbrushes[i]; -			if (iBrush->numNear) {-				assert(iBrush->nearBrushes);-				free(iBrush->nearBrushes);-				iBrush->numNear = 0;-				iBrush->nearBrushes = NULL;+				if (iBrush->numNear) {+					assert(iBrush->nearBrushes);+					free(iBrush->nearBrushes);+					iBrush->numNear = 0;+					iBrush->nearBrushes = NULL;+				} 			}+			return 0;+		} else {+			/* start from scratch */+			LoadMapFile(mapFilename);+			SetModelNumbers();++			ProcessModels(bspFilename); 		}-		return 0;-	} else {-		/* start from scratch */-		LoadMapFile(mapFilename);-		SetModelNumbers(); -		ProcessModels(bspFilename);-	}+		end = time(NULL);+		Verb_Printf(VERB_LESS, "%5.0f seconds elapsed\n", end - start);+		begin = start; -	end = time(NULL);-	Verb_Printf(VERB_LESS, "%5.0f seconds elapsed\n", end - start);-	begin = start;+		if (!config.onlyents && config.noradiosity != RADIOSITY_NONE) {+			Verb_Printf(VERB_LESS, "----- Radiosity ----\n"); -	if (!config.onlyents && config.noradiosity != RADIOSITY_NONE) {-		Verb_Printf(VERB_LESS, "----- Radiosity ----\n");+			CalcTextureReflectivity(); -		CalcTextureReflectivity();+			if (config.noradiosity != RADIOSITY_DAY_ONLY) {+				/* compile night version */+				start = time(NULL);+				RadWorld();+				end = time(NULL);+				Verb_Printf(VERB_LESS, "%5.0f seconds elapsed\n", end - start);+			} -		if (config.noradiosity != RADIOSITY_DAY_ONLY) {-			/* compile night version */-			start = time(NULL);-			RadWorld();-			end = time(NULL);-			Verb_Printf(VERB_LESS, "%5.0f seconds elapsed\n", end - start);-		}+			if (config.noradiosity != RADIOSITY_NIGHT_ONLY) {+				/* compile day version */+				config.compile_for_day = 1;+				start = time(NULL);+				RadWorld();+				end = time(NULL);+				Verb_Printf(VERB_LESS, "%5.0f seconds elapsed\n", end - start);+			} -		if (config.noradiosity != RADIOSITY_NIGHT_ONLY) {-			/* compile day version */-			config.compile_for_day = 1;-			start = time(NULL);-			RadWorld();+			Verb_Printf(VERB_LESS, "writing %s\n", bspFilename);+			size = WriteBSPFile(bspFilename);+		} else {+			/* build per-vertex normals for phong shading */+			BuildVertexNormals();+			size = WriteBSPFile(bspFilename); 			end = time(NULL);-			Verb_Printf(VERB_LESS, "%5.0f seconds elapsed\n", end - start); 		}--		Verb_Printf(VERB_LESS, "writing %s\n", bspFilename);-		size = WriteBSPFile(bspFilename);-	} else {-		/* build per-vertex normals for phong shading */-		BuildVertexNormals();-		size = WriteBSPFile(bspFilename);-		end = time(NULL);+		Verb_Printf(VERB_LESS, "sum: %5.0f seconds elapsed - %.1g MB (%li bytes)\n\n", end - begin, (float)size / (1024.0f * 1024.0f), size);+		fileParam++; 	}-	Verb_Printf(VERB_LESS, "sum: %5.0f seconds elapsed - %.1g MB (%li bytes)\n\n", end - begin, (float)size / (1024.0f * 1024.0f), size);- 	return 0; }