qbsp: refactor FindPlane
This commit is contained in:
parent
0d0f265f05
commit
0ebbdac5f9
|
|
@ -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);
|
brush_t *LoadBrush(const mapbrush_t *mapbrush, const vec3_t rotate_offset, const int hullnum);
|
||||||
void FreeBrushes(brush_t *brushlist);
|
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 PlaneEqual(const qbsp_plane_t *p1, const qbsp_plane_t *p2);
|
||||||
bool PlaneInvEqual(const qbsp_plane_t *p1, const qbsp_plane_t *p2);
|
bool PlaneInvEqual(const qbsp_plane_t *p1, const qbsp_plane_t *p2);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
* - Returns a global plane number and the side that will be the front
|
||||||
*/
|
*/
|
||||||
int
|
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);
|
const qbsp_plane_t &p = map.planes.at(i);
|
||||||
if (PlaneEqual(&p, plane)) {
|
if (PlaneEqual(&p, &plane)) {
|
||||||
*side = SIDE_FRONT;
|
*side = SIDE_FRONT;
|
||||||
return i;
|
return i;
|
||||||
} else if (PlaneInvEqual(&p, plane)) {
|
} else if (PlaneInvEqual(&p, &plane)) {
|
||||||
*side = SIDE_BACK;
|
*side = SIDE_BACK;
|
||||||
return i;
|
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);
|
FreeMem(w, WINDING, 1);
|
||||||
|
|
||||||
f->texinfo = hullnum ? 0 : mapface->texinfo;
|
f->texinfo = hullnum ? 0 : mapface->texinfo;
|
||||||
f->planenum = FindPlane(&plane, &f->planeside);
|
f->planenum = FindPlane(plane.normal, plane.dist, &f->planeside);
|
||||||
f->next = facelist;
|
f->next = facelist;
|
||||||
facelist = f;
|
facelist = f;
|
||||||
CheckFace(f);
|
CheckFace(f);
|
||||||
|
|
|
||||||
|
|
@ -418,7 +418,7 @@ MakeHeadnodePortals(const mapentity_t *entity, node_t *node)
|
||||||
pl->normal[i] = 1;
|
pl->normal[i] = 1;
|
||||||
pl->dist = bounds[j][i];
|
pl->dist = bounds[j][i];
|
||||||
}
|
}
|
||||||
p->planenum = FindPlane(pl, &side);
|
p->planenum = FindPlane(pl->normal, pl->dist, &side);
|
||||||
|
|
||||||
p->winding = BaseWindingForPlane(pl);
|
p->winding = BaseWindingForPlane(pl);
|
||||||
if (side)
|
if (side)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue