X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=rigidbody.h;h=b1dc834a76ab710d046ec99f729de9da1703d955;hb=ad89a3e4bba4abe99abc48b1760822ca23d03d82;hp=3d2f4107ca962f433e4f85d46493c2911fc5e816;hpb=8c376ed2e4021a18b0a6c6e800109d67ad09d198;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/rigidbody.h b/rigidbody.h index 3d2f410..b1dc834 100644 --- a/rigidbody.h +++ b/rigidbody.h @@ -466,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 }; @@ -1231,11 +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; - - bh_iter it; - bh_iter_init( 0, &it ); - int idx; + scene_context *sc = s->bh_scene->user; int count = 0; @@ -1243,8 +1239,12 @@ VG_STATIC int rb_sphere__scene( m4x3f mtxA, rb_sphere *b, boxf box; v3_sub( mtxA[3], (v3f){ r,r,r }, box[0] ); v3_add( mtxA[3], (v3f){ r,r,r }, box[1] ); + + bh_iter it; + i32 idx; + bh_iter_init_box( 0, &it, box ); - while( bh_next( s->bh_scene, &it, box, &idx ) ){ + while( bh_next( s->bh_scene, &it, &idx ) ){ u32 *ptri = &sc->arrindices[ idx*3 ]; v3f tri[3]; @@ -1273,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; @@ -1294,13 +1294,13 @@ VG_STATIC int rb_box__scene( m4x3f mtxA, boxf bbx, m4x3_invert_affine( mtxA, to_local ); bh_iter it; - bh_iter_init( 0, &it ); + bh_iter_init_box( 0, &it, world_bbx ); int idx; int count = 0; vg_line_boxf( world_bbx, VG__RED ); - while( bh_next( s->bh_scene, &it, world_bbx, &idx ) ){ + while( bh_next( s->bh_scene, &it, &idx ) ){ u32 *ptri = &sc->arrindices[ idx*3 ]; for( int j=0; j<3; j++ ) @@ -1517,18 +1517,18 @@ VG_STATIC int rb_capsule__scene( m4x3f mtxA, rb_capsule *c, m4x3f mtxB, rb_scene *s, rb_ct *buf ) { - bh_iter it; - bh_iter_init( 0, &it ); - int idx; int count = 0; boxf bbx; 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 ) ){ + bh_iter it; + bh_iter_init_box( 0, &it, bbx ); + i32 idx; + while( bh_next( s->bh_scene, &it, &idx ) ){ u32 *ptri = &sc->arrindices[ idx*3 ]; v3f tri[3]; @@ -2229,7 +2229,7 @@ VG_STATIC void rb_effect_spring_target_vector( rigidbody *rba, v3f ra, v3f rt, float timestep ) { float d = v3_dot( rt, ra ); - float a = vg_signf( d ) * acosf( vg_clampf( d, -1.0f, 1.0f ) ); + float a = acosf( vg_clampf( d, -1.0f, 1.0f ) ); v3f axis; v3_cross( rt, ra, axis );