Example #1
0
/*
=================
LoadMapFile

loads a map file into a list of entities
=================
*/
void LoadMapFile( const char *filename, bool onlyLights )
{		
	brush_t		*b;
	int		oldNumEntities, numMapBrushes;
	
	MsgDev( D_NOTE, "--- LoadMapFile ---\n" );
	Msg( "Loading %s\n", filename );
	
	mapfile = Com_OpenScript( filename, NULL, 0 );
	if( !mapfile ) Sys_Break( "can't loading map file %s\n", filename );	
	
	if( onlyLights ) 
		oldNumEntities = numEntities;
	else numEntities = 0;

	c_detail = 0;	
	numMapDrawSurfs = 0;
	g_bBrushPrimit = BRUSH_UNKNOWN;
	
	// allocate a very large temporary brush for building the brushes as they are loaded
	buildBrush = AllocBrush( MAX_BUILD_SIDES );
	
	while( ParseMapEntity( onlyLights ));
	Com_CloseScript( mapfile );
	
	if( onlyLights )
	{
		MsgDev( D_INFO, "%9d light entities\n", numEntities - oldNumEntities );
	}
	else
	{
		ClearBounds( mapMins, mapMaxs );
		for( b = entities[0].brushes; b; b = b->next )
		{
			AddPointToBounds( b->mins, mapMins, mapMaxs );
			AddPointToBounds( b->maxs, mapMins, mapMaxs );
		}

		VectorSubtract( mapMaxs, mapMins, mapSize );		
		numMapBrushes = CountBrushList( entities[0].brushes );
		if(( float )c_detail / (float) numMapBrushes < 0.10f && numMapBrushes > 500 )
			MsgDev( D_WARN, "Over 90 percent structural map detected. Compile time may be adversely affected.\n" );
		
		MsgDev( D_NOTE, "%9d total world brushes\n", numMapBrushes );
		MsgDev( D_NOTE, "%9d detail brushes\n", c_detail );
		MsgDev( D_NOTE, "%9d patches\n", numMapPatches );
		MsgDev( D_NOTE, "%9d boxbevels\n", c_boxbevels );
		MsgDev( D_NOTE, "%9d edgebevels\n", c_edgebevels );
		MsgDev( D_NOTE, "%9d entities\n", numEntities );
		MsgDev( D_NOTE, "%9d planes\n", nummapplanes );
		MsgDev( D_NOTE, "%9d areaportals\n", c_areaportals );
		MsgDev( D_INFO, "World size: %5.0f, %5.0f, %5.0f\n", mapSize[0], mapSize[1], mapSize[2] );
		
		// write bogus map
		if( fakemap ) WriteBSPBrushMap( "fakemap.map", entities[0].brushes );
	}
}
Example #2
0
/*
 * @brief
 */
void LoadMapFile(const char *file_name) {
	int32_t subdivide;
	int32_t i;

	Com_Verbose("--- LoadMapFile ---\n");

	LoadScriptFile(file_name);

	memset(map_brushes, 0, sizeof(map_brush_t) * MAX_BSP_BRUSHES);
	num_map_brushes = 0;

	memset(map_brush_sides, 0, sizeof(side_t) * MAX_BSP_SIDES);
	num_map_brush_sides = 0;

	memset(map_brush_textures, 0, sizeof(map_brush_texture_t) * MAX_BSP_SIDES);

	memset(map_planes, 0, sizeof(map_plane_t) * MAX_BSP_PLANES);
	num_map_planes = 0;

	num_entities = 0;
	while (ParseMapEntity()) {
	}

	subdivide = atoi(ValueForKey(&entities[0], "subdivide"));

	if (subdivide >= 256 && subdivide <= 2048) {
		Com_Verbose("Using subdivide %d from worldspawn.\n", subdivide);
		subdivide_size = subdivide;
	}

	ClearBounds(map_mins, map_maxs);
	for (i = 0; i < entities[0].num_brushes; i++) {
		if (map_brushes[i].mins[0] > MAX_WORLD_COORD)
			continue; // no valid points
		AddPointToBounds(map_brushes[i].mins, map_mins, map_maxs);
		AddPointToBounds(map_brushes[i].maxs, map_mins, map_maxs);
	}

	Com_Verbose("%5i brushes\n", num_map_brushes);
	Com_Verbose("%5i clip brushes\n", c_clip_brushes);
	Com_Verbose("%5i total sides\n", num_map_brush_sides);
	Com_Verbose("%5i box bevels\n", c_box_bevels);
	Com_Verbose("%5i edge bevels\n", c_edge_bevels);
	Com_Verbose("%5i entities\n", num_entities);
	Com_Verbose("%5i planes\n", num_map_planes);
	Com_Verbose("%5i area portals\n", c_area_portals);
	Com_Verbose("size: %5.0f,%5.0f,%5.0f to %5.0f,%5.0f,%5.0f\n", map_mins[0], map_mins[1],
			map_mins[2], map_maxs[0], map_maxs[1], map_maxs[2]);
}
Example #3
0
/*
================
LoadMapFile
================
*/
void LoadMapFile (char *filename)
{		
	int		i;

	qprintf ("--- LoadMapFile ---\n");

	LoadScriptFile (filename);

	nummapbrushsides = 0;
	num_entities = 0;
	
	while (ParseMapEntity ())
	{
	}

	ClearBounds (map_mins, map_maxs);
	for (i=0 ; i<entities[0].numbrushes ; i++)
	{
		if (mapbrushes[i].mins[0] > 4096)
			continue;	// no valid points
		AddPointToBounds (mapbrushes[i].mins, map_mins, map_maxs);
		AddPointToBounds (mapbrushes[i].maxs, map_mins, map_maxs);
	}

	qprintf ("%5i brushes\n", nummapbrushes);
	qprintf ("%5i clipbrushes\n", c_clipbrushes);
	qprintf ("%5i total sides\n", nummapbrushsides);
	qprintf ("%5i boxbevels\n", c_boxbevels);
	qprintf ("%5i edgebevels\n", c_edgebevels);
	qprintf ("%5i entities\n", num_entities);
	qprintf ("%5i planes\n", nummapplanes);
	qprintf ("%5i areaportals\n", c_areaportals);
	qprintf ("size: %5.0f,%5.0f,%5.0f to %5.0f,%5.0f,%5.0f\n", map_mins[0],map_mins[1],map_mins[2],
		map_maxs[0],map_maxs[1],map_maxs[2]);

//	TestExpandBrushes ();
}
Example #4
0
/**
 * @sa WriteMapFile
 * @sa ParseMapEntity
 */
void LoadMapFile (const char* filename)
{
	Verb_Printf(VERB_EXTRA, "--- LoadMapFile ---\n");

	LoadScriptFile(filename);

	OBJZERO(mapbrushes);
	nummapbrushes = 0;

	OBJZERO(brushsides);
	nummapbrushsides = 0;

	OBJZERO(side_brushtextures);

	OBJZERO(mapplanes);

	num_entities = 0;
	/* Create this shortcut to mapTiles[0] */
	curTile = &mapTiles.mapTiles[0];
	/* Set the number of tiles to 1. This is fix for ufo2map right now. */
	mapTiles.numTiles = 1;

	char entityString[MAX_TOKEN_CHARS];
	const char* ump = GetUMPName(filename);
	if (ump != nullptr)
		ParseUMP(ump, entityString, false);

	while (ParseMapEntity(filename, entityString));

	int subdivide = atoi(ValueForKey(&entities[0], "subdivide"));
	if (subdivide >= 256 && subdivide <= 2048) {
		Verb_Printf(VERB_EXTRA, "Using subdivide %d from worldspawn.\n", subdivide);
		config.subdivideSize = subdivide;
	}

	if (footstepsCnt)
		Com_Printf("Generated footstep file with %i entries\n", footstepsCnt);
	if (materialsCnt)
		Com_Printf("Generated material file with %i entries\n", materialsCnt);

	vec3_t map_mins, map_maxs;
	ClearBounds(map_mins, map_maxs);
	for (int i = 0; i < entities[0].numbrushes; i++) {
		if (mapbrushes[i].mbBox.mins[0] > MAX_WORLD_WIDTH)
			continue;	/* no valid points */
		AddPointToBounds(mapbrushes[i].mbBox.mins, map_mins, map_maxs);
		AddPointToBounds(mapbrushes[i].mbBox.maxs, map_mins, map_maxs);
	}

	/* save a copy of the brushes */
	memcpy(mapbrushes + nummapbrushes, mapbrushes, sizeof(mapbrush_t) * nummapbrushes);

	Verb_Printf(VERB_EXTRA, "%5i brushes\n", nummapbrushes);
	Verb_Printf(VERB_EXTRA, "%5i total sides\n", nummapbrushsides);
	Verb_Printf(VERB_EXTRA, "%5i boxbevels\n", c_boxbevels);
	Verb_Printf(VERB_EXTRA, "%5i edgebevels\n", c_edgebevels);
	Verb_Printf(VERB_EXTRA, "%5i entities\n", num_entities);
	Verb_Printf(VERB_EXTRA, "%5i planes\n", nummapplanes);
	Verb_Printf(VERB_EXTRA, "size: %5.0f,%5.0f,%5.0f to %5.0f,%5.0f,%5.0f\n",
		map_mins[0], map_mins[1], map_mins[2], map_maxs[0], map_maxs[1], map_maxs[2]);
}