X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player.h;h=a378f72a7e76368c012ab3a156a9b7a28c95be3d;hb=344f0153cf1907da87dd041db3ec517325b1c429;hp=a0ac8585ab863ea969c5815629a90f8afc16a5dc;hpb=84a7ae83a25966e0004a1a4b409dbb3d49fae286;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player.h b/player.h index a0ac858..a378f72 100644 --- a/player.h +++ b/player.h @@ -439,34 +439,26 @@ static void player_physics(void) vg_line(tri[1],tri[2],0xff00ff00 ); vg_line(tri[2],tri[0],0xff00ff00 ); - v3f co, norm; - float p; + v3f temp; + v3_copy( player.rb.co, temp ); for( int j=0; j<2; j++ ) { - if( sphere_vs_triangle( poles[j], k_board_radius, tri,co,norm,&p) ) + if(manifold_count >= vg_list_size(manifold)) { - if(manifold_count >= vg_list_size(manifold)) - { - vg_error("Manifold overflow!\n"); - break; - } - - v3f p1; - v3_muladds( poles[j], norm, p, p1 ); - vg_line( poles[j], p1, 0xffffffff ); - - struct contact *ct = &manifold[manifold_count ++]; - v3_copy( co, ct->co ); - v3_copy( norm, ct->n ); + vg_error("Manifold overflow!\n"); + break; + } - ct->bias = -0.2f*k_rb_rate*vg_minf(0.0f,-p+k_board_allowance); - ct->norm_impulse = 0.0f; + rb_ct *ct = &manifold[manifold_count]; + v3_copy( poles[j], player.rb.co ); - v3_add( norm, surface_avg, surface_avg ); - } + manifold_count += rb_sphere_vs_triangle( &player.rb, tri, ct ); } + + v3_copy( temp, player.rb.co ); } + rb_presolve_contacts( manifold, manifold_count ); if( !manifold_count ) {