]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - tools/quake3/common/polylib.c
try to fix the "-np surfaces disappear" bug
[xonotic/netradiant.git] / tools / quake3 / common / polylib.c
index 34dd173ecbd0473715dd3a688ce22ac785f6756d..af4b98e4a113b1bfb318ceaf88cb0692d8e7ba6e 100644 (file)
@@ -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);
+}
+
 
 /*
 =============