+ m4x3f transform;
+ q_m3x3( pose->root_q, transform );
+ v3_copy( pose->root_co, transform[3] );
+
+ if( pose->type == k_player_pose_type_ik ){
+ skeleton_apply_pose( sk, pose->keyframes, k_anim_apply_defer_ik );
+ skeleton_apply_ik_pass( sk );
+ skeleton_apply_pose( sk, pose->keyframes, k_anim_apply_deffered_only );
+ skeleton_apply_inverses( sk );
+ skeleton_apply_transform( sk, transform );
+ }
+ else if( pose->type == k_player_pose_type_fk_2 ){
+ skeleton_apply_pose( sk, pose->keyframes, k_anim_apply_always );
+ skeleton_apply_inverses( sk );
+ skeleton_apply_transform( sk, transform );
+ }
+}
+
+VG_STATIC void player__animate( player_instance *player ){
+ if( _player_animate[ player->subsystem ] &&
+ _player_pose[ player->subsystem ] ){
+ _player_animate[ player->subsystem ]( player );
+ _player_pose[ player->subsystem ]( player, &player->pose );