X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_walk.c;h=100e21f60e020b4ceea67f39bdcc2436515faf9d;hb=8090b8da9ce1397ba47d7e2d91b4f1716f708f25;hp=193e79a2feba0ecf8f6d28b7431c6456d87b473c;hpb=54f371130e8cf89999ed9b076b906a7072df8d40;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_walk.c b/player_walk.c index 193e79a..100e21f 100644 --- a/player_walk.c +++ b/player_walk.c @@ -318,9 +318,10 @@ static void player__walk_pre_update(void){ w->state.outro_start_time = vg.time; localplayer.immobile = 1; - struct player_avatar *av = localplayer.playeravatar; - m4x3_mulv( localplayer.final_mtx[ av->id_ik_foot_r ], - av->sk.bones[ av->id_ik_foot_r ].co, + u32 foot_id = localplayer.id_ik_foot_r; + + m4x3_mulv( localplayer.final_mtx[ foot_id ], + localplayer.skeleton.bones[ foot_id ].co, w->state.drop_in_foot_anchor ); } else{ @@ -819,7 +820,6 @@ static void player__walk_animate(void){ } if( w->state.outro_type ){ - struct player_avatar *av = localplayer.playeravatar; struct skeleton_anim *anim = player_walk_outro_anim( w->state.outro_type ); f32 outro_length = (f32)anim->length / anim->rate, @@ -890,8 +890,7 @@ static void player__walk_animate(void){ static void player__walk_pose( void *_animator, player_pose *pose ){ struct player_walk *w = &player_walk; struct player_walk_animator *animator = _animator; - struct skeleton *sk = &localplayer.playeravatar->sk; - struct player_avatar *av = localplayer.playeravatar; + struct skeleton *sk = &localplayer.skeleton; v3_copy( animator->root_co, pose->root_co ); v4_copy( animator->root_q, pose->root_q ); @@ -926,14 +925,14 @@ static void player__walk_pose( void *_animator, player_pose *pose ){ skeleton_sample_anim( sk, w->anim_sit, st*sit_norm, bpose ); v4f qy,qp; - f32 *qh = bpose[av->id_head-1].q; + f32 *qh = bpose[localplayer.id_head-1].q; q_axis_angle( qy, (v3f){0.0f,1.0f,0.0f}, animator->yaw*0.5f*st ); q_axis_angle( qp, (v3f){0.0f,0.0f,1.0f}, animator->pitch*st ); q_mul( qy, qh, qh ); q_mul( qh, qp, qh ); q_normalize( qh ); - qh = bpose[av->id_chest-1].q; + qh = bpose[localplayer.id_chest-1].q; q_axis_angle( qy, (v3f){0.0f,1.0f,0.0f}, animator->yaw*0.5f*st ); q_mul( qy, qh, qh ); q_normalize( qh ); @@ -965,9 +964,10 @@ static void player__walk_pose( void *_animator, player_pose *pose ){ v3f anchored_pos; m4x3_mulv( inverse, animator->foot_anchor, anchored_pos ); - v3_lerp( pose->keyframes[ av->id_ik_foot_r-1 ].co, anchored_pos, + v3_lerp( pose->keyframes[ localplayer.id_ik_foot_r-1 ].co, + anchored_pos, 1.0f-animator->commit_t, - pose->keyframes[ av->id_ik_foot_r-1 ].co ); + pose->keyframes[ localplayer.id_ik_foot_r-1 ].co ); } } else @@ -979,7 +979,6 @@ static void player__walk_post_animate(void){ * Camera */ struct player_walk *w = &player_walk; - struct player_avatar *av = localplayer.playeravatar; if( w->state.outro_type ){ struct skeleton_anim *anim = player_walk_outro_anim(w->state.outro_type); @@ -1030,8 +1029,7 @@ static void player__walk_im_gui(void){ static void player__walk_bind(void){ struct player_walk *w = &player_walk; - struct player_avatar *av = localplayer.playeravatar; - struct skeleton *sk = &av->sk; + struct skeleton *sk = &localplayer.skeleton; w->anim_idle = skeleton_get_anim( sk, "idle_cycle+y" ); w->anim_walk = skeleton_get_anim( sk, "walk+y" );