X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=character.h;h=94b181e053343ab7ef0f960719aa0cf0ba527271;hb=84a7ae83a25966e0004a1a4b409dbb3d49fae286;hp=39ee472ab436a5805e49f8694cd825af37215ee0;hpb=6d66c67945f84476d6ac75a0497007cc30bcf58c;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/character.h b/character.h index 39ee472..94b181e 100644 --- a/character.h +++ b/character.h @@ -556,8 +556,7 @@ static void character_testpose( struct character *ch, float t ) m4x3_identity( ch->matrices[k_chpart_wf] ); } -static float *player_cam_pos(void); -static void character_draw( struct character *ch, float temp ) +static void character_draw( struct character *ch, float temp, m4x3f camera ) { shader_character_use(); shader_character_uPv( vg_pv ); @@ -565,7 +564,7 @@ static void character_draw( struct character *ch, float temp ) vg_tex2d_bind( &tex_pallet, 0 ); shader_character_uTexMain( 0 ); shader_character_uOpacity( temp ); - shader_character_uCamera( player_cam_pos() ); + shader_character_uCamera( camera[3] ); shader_link_standard_ub( _shader_character.id, 2 ); glEnable( GL_CULL_FACE ); @@ -825,8 +824,7 @@ static void character_ragdoll_copypose( struct character *ch, v3f v ) m4x3_mulv( ch->matrices[i], rb->delta, rb->co ); m3x3_q( ch->matrices[i], rb->q ); v3_copy( v, rb->v ); - v3_zero( rb->I ); - rb->manifold_count = 0; /* ? */ + v3_zero( rb->w ); rb_update_transform( rb ); } @@ -884,11 +882,14 @@ static void character_debug_ragdoll( struct character *ch ) static void character_ragdoll_iter( struct character *ch ) { + rb_solver_reset(); + for( int i=0; iragdoll[i] ); rb_build_manifold_terrain( &ch->ragdoll[i] ); + /* TODO: Cars */ +#if 0 u32 colliders[16]; int len = bh_select( &world.bhcubes, ch->ragdoll[i].bbx_world, colliders, 16 ); @@ -896,6 +897,7 @@ static void character_ragdoll_iter( struct character *ch ) for( int j=0; jragdoll[i], &world.temp_rbs[colliders[j]] ); +#endif } v3f rv; @@ -904,14 +906,14 @@ static void character_ragdoll_iter( struct character *ch ) for( int i=0; i<2; i++ ) if( ch->shoes[i] ) shoe_vel[i] = v3_length( ch->ragdoll[i].v ); - - for( int i=0; i<20; i++ ) + + /* This used to be 20 iterations */ + for( int i=0; i<5; i++ ) { float const k_springfactor = 1.0f/20.0f; - - for( int j=0; jragdoll[j] ); - + + rb_solve_contacts(); + for( int j=0; jco, dst->co ); v3_copy( src->v, dst->v ); v3_copy( src->q, dst->q ); - v3_copy( src->I, dst->I ); + v3_copy( src->w, dst->w ); } } }