f
[carveJwlIkooP6JGAAIwe30JlM.git] / player.h
index a0ac8585ab863ea969c5815629a90f8afc16a5dc..a378f72a7e76368c012ab3a156a9b7a28c95be3d 100644 (file)
--- 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 )
    {