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 )
{