X-Git-Url: https://harrygodden.com/git/?p=convexer.git;a=blobdiff_plain;f=cxr%2Fcxr.h;fp=cxr%2Fcxr.h;h=dd7a8b83092dffc3612042b87aba4216abe6b54f;hp=9f11096925ab8b105784ec411a5ced306951b39b;hb=dbf8a911ed372acbda6ae7f67b1c3987082d1c9b;hpb=e09d3691cb55505c81624d93df7713dbbaafaa54 diff --git a/cxr/cxr.h b/cxr/cxr.h index 9f11096..dd7a8b8 100644 --- a/cxr/cxr.h +++ b/cxr/cxr.h @@ -1335,10 +1335,10 @@ static void cxr_link_manifold( int init_reverse = 0; int unique_edge_count = 0; - int discard_splits = 1; /* Try remove splitting faces first */ { + int split_total = 0; for( int j=0; jcount; j++ ) { cxr_polygon *poly = &mesh->polys[ solid_buffer[solid->start+j] ]; @@ -1359,19 +1359,16 @@ static void cxr_link_manifold( } if( interior_count < poly->loop_total-1 ) + { + split_total ++; continue; + } temp_solid[ temp_solid_len ++ ] = solid_buffer[solid->start+j]; } - if( temp_solid_len < 3 ) + if( temp_solid_len < 3 || (split_total & 0x2) /* unkown reasons */ ) { - /* Revert back to normal */ - free( temp_solid ); - - temp_solid = &solid_buffer[ solid->start ]; - temp_solid_len = solid->count; - discard_splits = 0; } else { @@ -1382,8 +1379,7 @@ static void cxr_link_manifold( solid->count = temp_solid_len; } - if( discard_splits ) - free( temp_solid ); + free( temp_solid ); } for( int j=0; jcount; j++ )