X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_render.c;h=92aecbe5635578f0f72706d5d49e1d1fb8ecae0b;hb=137d40d96fe923600d8378b8e138e3c276f27ff4;hp=2cf0e283e5736109f61f914a0bd5f4a8e6e1c7b4;hpb=df9f72d2912a5424d37dfdb02f76aba8f1ed4df1;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_render.c b/player_render.c index 2cf0e28..92aecbe 100644 --- a/player_render.c +++ b/player_render.c @@ -25,6 +25,7 @@ static void player_avatar_load( struct player_avatar *av, const char *path ){ skeleton_setup( sk, vg_mem.rtmemory, &av->meta ); av->id_hip = skeleton_bone_id( sk, "hips" ); + av->id_chest = skeleton_bone_id( sk, "chest" ); av->id_ik_hand_l = skeleton_bone_id( sk, "hand.IK.L" ); av->id_ik_hand_r = skeleton_bone_id( sk, "hand.IK.R" ); av->id_ik_elbow_l = skeleton_bone_id( sk, "elbow.L" ); @@ -170,17 +171,22 @@ static void player__animate(void){ assert( sys->animator_data ); sys->animate(); - sys->pose( sys->animator_data, &localplayer.pose ); + + player_pose *pose = &localplayer.pose; + sys->pose( sys->animator_data, pose ); struct skeleton *sk = &localplayer.playeravatar->sk; if( localplayer.holdout_time > 0.0f ){ - player_pose *pose = &localplayer.pose; skeleton_lerp_pose( sk, pose->keyframes,localplayer.holdout_pose.keyframes, localplayer.holdout_time, pose->keyframes ); + + v3_muladds( pose->root_co, localplayer.holdout_pose.root_co, + localplayer.holdout_time, pose->root_co ); q_nlerp( pose->root_q, localplayer.holdout_pose.root_q, localplayer.holdout_time, pose->root_q ); + localplayer.holdout_time -= vg.time_frame_delta * 2.0f; } @@ -428,7 +434,7 @@ static void render_playermodel( camera *cam, world_instance *world, glUniformMatrix4x3fv( _uniform_model_character_view_uTransforms, skeleton->bone_count, 0, - (f32 *)final_mtx ); + (const GLfloat *)final_mtx ); mesh_bind( &model->mdl.mesh ); mesh_draw( &model->mdl.mesh );