qbsp: refactor FindPlane

This commit is contained in:
Eric Wasylishen 2017-07-17 21:24:32 -06:00
parent 0d0f265f05
commit 0ebbdac5f9
3 changed files with 12 additions and 8 deletions

View File

@ -42,7 +42,7 @@ int Brush_NumFaces(const brush_t *brush);
brush_t *LoadBrush(const mapbrush_t *mapbrush, const vec3_t rotate_offset, const int hullnum);
void FreeBrushes(brush_t *brushlist);
int FindPlane(const qbsp_plane_t *plane, int *side);
int FindPlane(const vec3_t normal, const vec_t dist, int *side);
bool PlaneEqual(const qbsp_plane_t *p1, const qbsp_plane_t *p2);
bool PlaneInvEqual(const qbsp_plane_t *p1, const qbsp_plane_t *p2);

View File

@ -249,19 +249,23 @@ NewPlane(const vec3_t normal, const vec_t dist, int *side)
* - Returns a global plane number and the side that will be the front
*/
int
FindPlane(const qbsp_plane_t *plane, int *side)
FindPlane(const vec3_t normal, const vec_t dist, int *side)
{
for (int i : map.planehash[plane_hash_fn(plane)]) {
qbsp_plane_t plane = {0};
VectorCopy(normal, plane.normal);
plane.dist = dist;
for (int i : map.planehash[plane_hash_fn(&plane)]) {
const qbsp_plane_t &p = map.planes.at(i);
if (PlaneEqual(&p, plane)) {
if (PlaneEqual(&p, &plane)) {
*side = SIDE_FRONT;
return i;
} else if (PlaneInvEqual(&p, plane)) {
} else if (PlaneInvEqual(&p, &plane)) {
*side = SIDE_BACK;
return i;
}
}
return NewPlane(plane->normal, plane->dist, side);
return NewPlane(plane.normal, plane.dist, side);
}
@ -432,7 +436,7 @@ CreateBrushFaces(hullbrush_t *hullbrush, const vec3_t rotate_offset,
FreeMem(w, WINDING, 1);
f->texinfo = hullnum ? 0 : mapface->texinfo;
f->planenum = FindPlane(&plane, &f->planeside);
f->planenum = FindPlane(plane.normal, plane.dist, &f->planeside);
f->next = facelist;
facelist = f;
CheckFace(f);

View File

@ -418,7 +418,7 @@ MakeHeadnodePortals(const mapentity_t *entity, node_t *node)
pl->normal[i] = 1;
pl->dist = bounds[j][i];
}
p->planenum = FindPlane(pl, &side);
p->planenum = FindPlane(pl->normal, pl->dist, &side);
p->winding = BaseWindingForPlane(pl);
if (side)