From: hgn Date: Fri, 4 Aug 2023 11:26:02 +0000 (+0100) Subject: tone down triangle complainers X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;ds=sidebyside;h=1a40e653040837e47a4aba82d6b9f9800901fd64;p=carveJwlIkooP6JGAAIwe30JlM.git tone down triangle complainers --- diff --git a/maps_src/mp_spawn/main.mdl b/maps_src/mp_spawn/main.mdl index 3aa6cfb..7f8f1d3 100644 Binary files a/maps_src/mp_spawn/main.mdl and b/maps_src/mp_spawn/main.mdl differ diff --git a/rigidbody.h b/rigidbody.h index 9241999..1c1e8c8 100644 --- a/rigidbody.h +++ b/rigidbody.h @@ -852,7 +852,9 @@ VG_STATIC int rb_sphere__triangle( m4x3f mtxA, rb_sphere *b, v3_copy( tn, ct->n ); if( v3_length2( ct->n ) <= 0.00001f ){ +#ifdef RIGIDBODY_CRY_ABOUT_EVERYTHING vg_error( "Zero area triangle!\n" ); +#endif return 0; } @@ -960,6 +962,14 @@ VG_STATIC int rb_box__scene( m4x3f mtxA, boxf bbx, v3_sub( tri[1], tri[0], v0 ); v3_sub( tri[2], tri[0], v1 ); v3_cross( v0, v1, n ); + + if( v3_length2( n ) <= 0.00001f ){ +#ifdef RIGIDBODY_CRY_ABOUT_EVERYTHING + vg_error( "Zero area triangle!\n" ); +#endif + return 0; + } + v3_normalize( n ); /* find best feature */ @@ -1098,7 +1108,9 @@ VG_STATIC int rb_capsule__triangle( m4x3f mtxA, rb_capsule *c, v3_cross( v0, v1, n ); if( v3_length2( n ) <= 0.00001f ){ +#ifdef RIGIDBODY_CRY_ABOUT_EVERYTHING vg_error( "Zero area triangle!\n" ); +#endif return 0; } diff --git a/scene.h b/scene.h index 6d77e42..83badb2 100644 --- a/scene.h +++ b/scene.h @@ -135,11 +135,12 @@ VG_STATIC void scene_add_mdl_submesh( scene_context *ctx, mdl_context *mdl, u32 real_indices = 0; for( u32 i=0; iindice_count/3; i++ ){ - u32 *tri = &src_indices[i*3]; + u32 *src = &src_indices[i*3], + *dst = &dst_indices[real_indices]; v3f ab, ac, tn; - v3_sub( src_verts[tri[2]].co, src_verts[tri[0]].co, ab ); - v3_sub( src_verts[tri[1]].co, src_verts[tri[0]].co, ac ); + v3_sub( src_verts[src[2]].co, src_verts[src[0]].co, ab ); + v3_sub( src_verts[src[1]].co, src_verts[src[0]].co, ac ); v3_cross( ac, ab, tn ); #if 0 @@ -147,9 +148,9 @@ VG_STATIC void scene_add_mdl_submesh( scene_context *ctx, mdl_context *mdl, continue; #endif - dst_indices[real_indices+0] = tri[0] + ctx->vertex_count; - dst_indices[real_indices+1] = tri[1] + ctx->vertex_count; - dst_indices[real_indices+2] = tri[2] + ctx->vertex_count; + dst[0] = src[0] + ctx->vertex_count; + dst[1] = src[1] + ctx->vertex_count; + dst[2] = src[2] + ctx->vertex_count; real_indices += 3; }