Exemplo n.º 1
0
face_t *MergeFaceToList (face_t *face, face_t *list)
{	
  face_t	*newf, *f;
	
  for (f=list ; f ; f=f->next)
    {
      //CheckColinear (f);		
      if (mergedebug)
	{
	  Draw_ClearWindow ();
	  Draw_DrawFace (face);
	  Draw_DrawFace (f);
	  Draw_SetBlack ();
	}
      newf = TryMerge (face, f);
      if (!newf)
	continue;
      FreeFace (face);
      f->numpoints = -1;		// merged out
      return MergeFaceToList (newf, list);
    }
	
  // didn't merge, so add at start
  face->next = list;
  return face;
}
Exemplo n.º 2
0
/*
============
Brush_DrawAll

============
*/
void Brush_DrawAll (brushset_t *bs)
{
	brush_t	*b;
	face_t	*f;

	for (b=bs->brushes ; b ; b=b->next)
		for (f=b->faces ; f ; f=f->next)
			Draw_DrawFace (f);	
}
Exemplo n.º 3
0
/*
==================
DrawSurfaces
==================
*/
void DrawSurfaces (surface_t *surf)
{
	face_t	*f;

	Draw_ClearWindow ();
	for ( ; surf ; surf=surf->next)
	{
		for (f = surf->faces ; f ; f=f->next)
		{
			Draw_DrawFace (f);
		}
	}
}
Exemplo n.º 4
0
/*
============
MergeAll
============
*/
void MergeAll (surface_t *surfhead)
{
  surface_t       *surf;
  int                     mergefaces;
  face_t          *f;
	
  printf ("---- MergeAll ----\n");

  mergefaces = 0; 
  for (surf = surfhead ; surf ; surf=surf->next)
    {
      MergePlaneFaces (surf);
      Draw_ClearWindow ();
      for (f=surf->faces ; f ; f=f->next)
	{
	  Draw_DrawFace (f);
	  mergefaces++;
	}
    }
	
  printf ("%i mergefaces\n", mergefaces);
}
Exemplo n.º 5
0
/*
==================
SaveOutside

Saves all of the faces in the outside list to the bsp plane list
==================
*/
static void SaveOutside (qboolean mirror)
{
	face_t	*f, *next, *newf;
	int		i;
	int		planenum;

	for (f = outside ; f ; f = next)
	{
		next = f->next;
		csgfaces++;
		Draw_DrawFace (f);
		planenum = f->planenum;

		if (mirror)
		{
			newf = NewFaceFromFace (f);

			newf->numpoints = f->numpoints;
			newf->planeside = f->planeside ^ 1;	// reverse side
			newf->contents[0] = f->contents[1];
			newf->contents[1] = f->contents[0];

			for (i = 0 ; i < f->numpoints ; i++)	// add points backwards
			{
				VectorCopy (f->pts[f->numpoints-1-i], newf->pts[i]);
			}
		}
		else
			newf = NULL;

		validfaces[planenum] = MergeFaceToList(f, validfaces[planenum]);
		if (newf)
			validfaces[planenum] = MergeFaceToList(newf, validfaces[planenum]);

		validfaces[planenum] = FreeMergeListScraps (validfaces[planenum]);
	}
}
Exemplo n.º 6
0
void DrawList (face_t *list)
{
	for ( ; list ; list = list->next)
		Draw_DrawFace (list);
}