X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=tools%2Fquake3%2Fcommon%2Fpolylib.c;h=af4b98e4a113b1bfb318ceaf88cb0692d8e7ba6e;hb=323c01a9834da9b91c695e4cd4c735a944d7608e;hp=34dd173ecbd0473715dd3a688ce22ac785f6756d;hpb=94cb905da9c38e65cff6dcd9a56874c33c367df2;p=xonotic%2Fnetradiant.git diff --git a/tools/quake3/common/polylib.c b/tools/quake3/common/polylib.c index 34dd173e..af4b98e4 100644 --- a/tools/quake3/common/polylib.c +++ b/tools/quake3/common/polylib.c @@ -536,7 +536,7 @@ winding_t *ReverseWinding (winding_t *w) ClipWindingEpsilon ============= */ -void ClipWindingEpsilon (winding_t *in, vec3_t normal, vec_t dist, +void ClipWindingEpsilonStrict (winding_t *in, vec3_t normal, vec_t dist, vec_t epsilon, winding_t **front, winding_t **back) { vec_t dists[MAX_POINTS_ON_WINDING+4]; @@ -573,6 +573,10 @@ void ClipWindingEpsilon (winding_t *in, vec3_t normal, vec_t dist, *front = *back = NULL; + if (!counts[0] && !counts[1]) + { + return; + } if (!counts[0]) { *back = CopyWinding (in); @@ -643,6 +647,15 @@ void ClipWindingEpsilon (winding_t *in, vec3_t normal, vec_t dist, Error ("ClipWinding: MAX_POINTS_ON_WINDING"); } +void ClipWindingEpsilon (winding_t *in, vec3_t normal, vec_t dist, + vec_t epsilon, winding_t **front, winding_t **back) +{ + ClipWindingEpsilonStrict(in, normal, dist, epsilon, front, back); + /* apparently most code expects that in the winding-on-plane case, the back winding is the original winding */ + if(!*front && !*back) + *back = CopyWinding(in); +} + /* =============