示例#1
0
void Select_Delete (void)
{
	brush_t	*brush;

	g_ptrSelectedFaces.RemoveAll();
	g_ptrSelectedFaceBrushes.RemoveAll();
	//selected_face = NULL;

	clearSelection();

	g_qeglobals.d_select_count = 0;
	g_qeglobals.d_num_move_points = 0;
	while (selected_brushes.next != &selected_brushes)
	{
		brush = selected_brushes.next;
		if (brush->patchBrush)
		{
			//Patch_Delete(brush->nPatchID);
			Patch_Delete(brush->pPatch);
		}
		if (brush->terrainBrush)
		{
			Terrain_Delete(brush->pTerrain );
		}

		Brush_Free (brush);
	}

	// FIXME: remove any entities with no brushes

	Sys_UpdateWindows (W_ALL);
}
示例#2
0
brush_t *Terrain_Parse( void ) {
	terrainMesh_t *pm;
	terrainVert_t *vert;
	int w;
	int h;

	GetToken( true );
    if ( strcmp( token, "{" ) ) {
		return NULL;
	}

	// get width
	GetToken( false );
	w = atoi( token );

	// get height
	GetToken( false );
	h = atoi( token );

	pm = MakeNewTerrain( w, h );

	// get scale_x
	GetToken( false );
	pm->scale_x = atoi( token );

	// get scale_y
	GetToken( false );
	pm->scale_y = atoi( token );

	// get origin
	GetToken( true );
	pm->origin[ 0 ] = atoi( token );
	GetToken( false );
	pm->origin[ 1 ] = atoi( token );
	GetToken( false );
	pm->origin[ 2 ] = atoi( token );

	// get the height map
	vert = pm->heightmap;
	for( h = 0; h < pm->height; h++ ) {
		for( w = 0; w < pm->width; w++, vert++ ) {
			GetToken( true );
			vert->height = atoi( token );

			if ( !Terrain_ParseFace( &vert->tri ) ) {
				Terrain_Delete( pm );
				return NULL;
			}

			Terrain_AddTexture( pm, vert->tri.texture );
		}
	}

	GetToken( true );
	if ( strcmp( token, "}" ) ) {
		Terrain_Delete( pm );
		return NULL;
	}

	return AddBrushForTerrain( pm, false );
}