basic php site
[carveJwlIkooP6JGAAIwe30JlM.git] / rigidbody.h
index 3d2f4107ca962f433e4f85d46493c2911fc5e816..b1dc834a76ab710d046ec99f729de9da1703d955 100644 (file)
@@ -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 );