A complete workshop implementation, I guess
[carveJwlIkooP6JGAAIwe30JlM.git] / rigidbody.h
index 5796c7aed341b577afad3bc607e40a7b046bcabf..efce416487fc164d2a2772d8c4a44d499fc2d989 100644 (file)
@@ -375,8 +375,7 @@ VG_STATIC void rb_update_transform( rigidbody *rb )
  */
 VG_STATIC void rb_extrapolate( rigidbody *rb, v3f co, v4f q )
 {
-   float substep = vg_clampf( vg.accumulator / k_rb_delta, 0.0f, 1.0f );
-
+   float substep = vg.time_fixed_extrapolate;
    v3_muladds( rb->co, rb->v, k_rb_delta*substep, co );
 
    if( v3_length2( rb->w ) > 0.0f ){
@@ -467,7 +466,7 @@ VG_STATIC void rb_iter( rigidbody *rb )
        !vg_validf( rb->v[1] ) ||
        !vg_validf( rb->v[2] ) )
    {
-      vg_fatal_exit_loop( "NaN velocity" );
+      vg_fatal_error( "NaN velocity" );
    }
 
    v3f gravity = { 0.0f, -9.8f, 0.0f };
@@ -1232,7 +1231,7 @@ VG_STATIC int rb_sphere__triangle( m4x3f mtxA, rb_sphere *b,
 VG_STATIC int rb_sphere__scene( m4x3f mtxA, rb_sphere *b,
                                 m4x3f mtxB, rb_scene *s, rb_ct *buf )
 {
-   scene *sc = s->bh_scene->user;
+   scene_context *sc = s->bh_scene->user;
 
    bh_iter it;
    bh_iter_init( 0, &it );
@@ -1274,7 +1273,7 @@ VG_STATIC int rb_box__scene( m4x3f mtxA, boxf bbx,
                              m4x3f mtxB, rb_scene *s, rb_ct *buf )
 {
 #if 1
-   scene *sc = s->bh_scene->user;
+   scene_context *sc = s->bh_scene->user;
    v3f tri[3];
 
    v3f extent, center;
@@ -1527,7 +1526,7 @@ VG_STATIC int rb_capsule__scene( m4x3f mtxA, rb_capsule *c,
    v3_sub( mtxA[3], (v3f){ c->height, c->height, c->height }, bbx[0] );
    v3_add( mtxA[3], (v3f){ c->height, c->height, c->height }, bbx[1] );
    
-   scene *sc = s->bh_scene->user;
+   scene_context *sc = s->bh_scene->user;
    
    while( bh_next( s->bh_scene, &it, bbx, &idx ) ){
       u32 *ptri = &sc->arrindices[ idx*3 ];