diff --git a/include/qbsp/winding.hh b/include/qbsp/winding.hh index 46d85137..c150a16d 100644 --- a/include/qbsp/winding.hh +++ b/include/qbsp/winding.hh @@ -38,6 +38,7 @@ winding_t *BaseWindingForPlane(const qbsp_plane_t *p); void CheckWinding(const winding_t *w); winding_t *NewWinding(int points); winding_t *CopyWinding(const winding_t *w); +winding_t *FlipWinding(const winding_t *w); winding_t *ClipWinding(winding_t *in, const qbsp_plane_t *split, bool keepon); void DivideWinding(const winding_t *in, const qbsp_plane_t *split, winding_t **front, winding_t **back); diff --git a/qbsp/winding.cc b/qbsp/winding.cc index 8d5a45c6..80a5b291 100644 --- a/qbsp/winding.cc +++ b/qbsp/winding.cc @@ -112,7 +112,19 @@ CopyWinding(const winding_t *w) return c; } - +/* +================== +FlipWinding +================== +*/ +winding_t *FlipWinding(const winding_t *w) +{ + winding_t *result = CopyWinding(w); + for (int i=0; inumpoints; i++) { + VectorCopy(w->points[i], result->points[w->numpoints - 1 - i]); + } + return result; +} /* ==================