X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_dead.c;h=acb434aba50fae7f72cce65c633bbc287dd7bfa4;hb=7796f3f18ba78b42599f199523fdb0fdabc5efa1;hp=f040adb47c55309f74b83615e2e100b78acccbc6;hpb=c4c762ce6f3bbdcb770bbc42e349aebbc3390d9d;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_dead.c b/player_dead.c index f040adb..acb434a 100644 --- a/player_dead.c +++ b/player_dead.c @@ -14,8 +14,7 @@ VG_STATIC void player__dead_animate ( player_instance *player, v3_zero( anim->root_co ); q_identity( anim->root_q ); - for( int i=0; ipose ); i ++ ) - { + for( int i=0; ipose ); i ++ ){ v3_zero( anim->pose[i].co ); v3_fill( anim->pose[i].s, 1.0f ); q_identity( anim->pose[i].q ); @@ -32,13 +31,17 @@ VG_STATIC void player__dead_post_animate( player_instance *player ) struct ragdoll_part *part = &player->ragdoll.parts[ av->id_hip-1 ]; - v3_lerp( d->co_lpf, part->rb.co, vg.frame_delta*4.0f, d->co_lpf ); - v3_lerp( d->v_lpf, part->rb.v, vg.frame_delta*4.0f, d->v_lpf ); - v3_lerp( d->w_lpf, part->rb.w, vg.frame_delta*4.0f, d->w_lpf ); + v3f ext_co; + v4f ext_q; + rb_extrapolate( &part->obj.rb, ext_co, ext_q ); + + v3_lerp( d->co_lpf, ext_co, vg.time_frame_delta*4.0f, d->co_lpf ); + v3_lerp( d->v_lpf, part->obj.rb.v, vg.time_frame_delta*4.0f, d->v_lpf ); + v3_lerp( d->w_lpf, part->obj.rb.w, vg.time_frame_delta*4.0f, d->w_lpf ); v3_copy( d->co_lpf, player->rb.co ); - v3_copy( d->v_lpf, player->rb.v ); - v3_copy( d->w_lpf, player->rb.w ); + v3_zero( player->rb.v ); + v3_zero( player->rb.w ); } VG_STATIC void player__dead_im_gui ( player_instance *player ) @@ -55,9 +58,9 @@ VG_STATIC void player__dead_transition ( player_instance *player ) struct player_avatar *av = player->playeravatar; struct ragdoll_part *part = &player->ragdoll.parts[ av->id_hip-1 ]; struct player_dead *d = &player->_dead; - v3_copy( part->rb.co, d->co_lpf ); - v3_copy( part->rb.v, d->v_lpf ); - v3_copy( part->rb.w, d->w_lpf ); + v3_copy( part->obj.rb.co, d->co_lpf ); + v3_copy( part->obj.rb.v, d->v_lpf ); + v3_copy( part->obj.rb.w, d->w_lpf ); } #endif /* PLAYER_DEAD_C */