Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

aas_edgemelting.c File Reference

#include "qbsp.h"
#include "../botlib/aasfile.h"
#include "aas_create.h"

Include dependency graph for aas_edgemelting.c:

Include dependency graph

Go to the source code of this file.

Functions

void AAS_MeltAreaFaceWindings (void)
int AAS_MeltFaceWinding (tmp_face_t *face1, tmp_face_t *face2)
int AAS_MeltFaceWindingsOfArea (tmp_area_t *tmparea)


Function Documentation

void AAS_MeltAreaFaceWindings void   ) 
 

Definition at line 92 of file aas_edgemelting.c.

References AAS_MeltFaceWindingsOfArea(), tmp_aas_s::areas, tmp_area_s::l_next, Log_Write(), qprintf(), tmp_area_t, and tmpaasworld.

Referenced by AAS_Create().

00093 {
00094     tmp_area_t *tmparea;
00095     int num_windingsplits = 0;
00096 
00097     Log_Write("AAS_MeltAreaFaceWindings\r\n");
00098     qprintf("%6d edges melted", num_windingsplits);
00099     //NOTE: first convex area (zero) is a dummy
00100     for (tmparea = tmpaasworld.areas; tmparea; tmparea = tmparea->l_next)
00101     {
00102         num_windingsplits += AAS_MeltFaceWindingsOfArea(tmparea);
00103         qprintf("\r%6d", num_windingsplits);
00104     } //end for
00105     qprintf("\n");
00106     Log_Write("%6d edges melted\r\n", num_windingsplits);
00107 } //end of the function AAS_MeltAreaFaceWindings

Here is the call graph for this function:

int AAS_MeltFaceWinding tmp_face_t face1,
tmp_face_t face2
 

Definition at line 35 of file aas_edgemelting.c.

References AddWindingPoint(), plane_t::dist, Error(), FreeWinding(), i, mapplanes, n, plane_t::normal, tmp_face_s::num, winding_t::numpoints, winding_t::p, tmp_face_s::planenum, PointOnWinding(), tmp_face_t, and tmp_face_s::winding.

Referenced by AAS_MeltFaceWindingsOfArea().

00036 {
00037     int i, n;
00038     int splits = 0;
00039     winding_t *w2, *neww;
00040     plane_t *plane1;
00041 
00042 #ifdef DEBUG
00043     if (!face1->winding) Error("face1 %d without winding", face1->num);
00044     if (!face2->winding) Error("face2 %d without winding", face2->num);
00045 #endif //DEBUG
00046     w2 = face2->winding;
00047     plane1 = &mapplanes[face1->planenum];
00048     for (i = 0; i < w2->numpoints; i++)
00049     {
00050         if (PointOnWinding(face1->winding, plane1->normal, plane1->dist, w2->p[i], &n))
00051         {
00052             neww = AddWindingPoint(face1->winding, w2->p[i], n);
00053             FreeWinding(face1->winding);
00054             face1->winding = neww;
00055 
00056             splits++;
00057         } //end if
00058     } //end for
00059     return splits;
00060 } //end of the function AAS_MeltFaceWinding

Here is the call graph for this function:

int AAS_MeltFaceWindingsOfArea tmp_area_t tmparea  ) 
 

Definition at line 68 of file aas_edgemelting.c.

References AAS_MeltFaceWinding(), tmp_face_s::frontarea, tmp_face_s::next, tmp_area_t, tmp_face_t, and tmp_area_s::tmpfaces.

Referenced by AAS_MeltAreaFaceWindings().

00069 {
00070     int side1, side2, num_windingsplits = 0;
00071     tmp_face_t *face1, *face2;
00072 
00073     for (face1 = tmparea->tmpfaces; face1; face1 = face1->next[side1])
00074     {
00075         side1 = face1->frontarea != tmparea;
00076         for (face2 = tmparea->tmpfaces; face2; face2 = face2->next[side2])
00077         {
00078             side2 = face2->frontarea != tmparea;
00079             if (face1 == face2) continue;
00080             num_windingsplits += AAS_MeltFaceWinding(face1, face2);
00081         } //end for
00082     } //end for
00083     return num_windingsplits;
00084 } //end of the function AAS_MeltFaceWindingsOfArea

Here is the call graph for this function:


Generated on Thu Aug 25 12:46:07 2005 for Quake III Arena by  doxygen 1.3.9.1