From: hgn Date: Sun, 5 Feb 2023 16:37:46 +0000 (+0000) Subject: holdout poses X-Git-Url: https://harrygodden.com/git/?a=commitdiff_plain;h=b06394c241991d85211af98ed0a7f4d730fa13d4;hp=06e5d59a9b7fdd96a2e46f49be85089b43df75ae;p=carveJwlIkooP6JGAAIwe30JlM.git holdout poses --- diff --git a/player.c b/player.c index 0c727be..c898e6d 100644 --- a/player.c +++ b/player.c @@ -209,6 +209,13 @@ VG_STATIC void player__pre_render( player_instance *player ) struct skeleton *sk = &player->playeravatar->sk; + if( player->holdout_time > 0.0f ) + { + skeleton_lerp_pose( sk, res.pose, player->holdout_pose, + player->holdout_time, res.pose ); + player->holdout_time -= vg.frame_delta * 4.0f; + } + skeleton_apply_pose( sk, res.pose, k_anim_apply_defer_ik ); skeleton_apply_ik_pass( sk ); skeleton_apply_pose( sk, res.pose, k_anim_apply_deffered_only ); diff --git a/player.h b/player.h index b6c70c0..137a1ad 100644 --- a/player.h +++ b/player.h @@ -77,6 +77,9 @@ struct player_instance struct player_ragdoll ragdoll; vg_tex2d *playertex; + player_pose holdout_pose; + float holdout_time; + /* * Subsystems * ------------------------------------------------- diff --git a/player_walk.c b/player_walk.c index a2a2ed8..0503f48 100644 --- a/player_walk.c +++ b/player_walk.c @@ -682,6 +682,9 @@ VG_STATIC void player__walk_animate( player_instance *player, v4_copy( dest->root_q, player->rb.q ); v3_muladds( dest->root_co, player->rb.to_world[1], -0.28f * dop_t, dest->root_co ); + + skeleton_copy_pose( sk, dest->pose, player->holdout_pose ); + player->holdout_time = 1.0f; } return; } @@ -689,6 +692,9 @@ VG_STATIC void player__walk_animate( player_instance *player, { v3_muladds( dest->root_co, player->rb.to_world[1], -0.28f * outro_t, dest->root_co ); + + skeleton_copy_pose( sk, dest->pose, player->holdout_pose ); + player->holdout_time = 1.0f; } } else