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{
}
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,
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 );
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 );
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
* 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);
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" );