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];
*front = *back = NULL;
+ if (!counts[0] && !counts[1])
+ {
+ return;
+ }
if (!counts[0])
{
*back = CopyWinding (in);
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);
+}
+
/*
=============