#include "player.h"
-VG_STATIC void player__dead_update ( player_instance *player )
-{
- player_ragdoll_iter( &player->ragdoll );
+static void player__dead_update(void){
+ player_ragdoll_iter( &localplayer.ragdoll );
}
-VG_STATIC void player__dead_post_update( player_instance *player ){
- struct player_dead *d = &player->_dead;
- struct player_avatar *av = player->playeravatar;
- struct ragdoll_part *part = &player->ragdoll.parts[ av->id_hip-1 ];
+static void player__dead_post_update(void){
+ struct ragdoll_part *part =
+ &localplayer.ragdoll.parts[ localplayer.id_hip-1 ];
+ struct player_dead *d = &player_dead;
v3f ext_co;
v4f ext_q;
v3_lerp( d->v_lpf, part->obj.rb.v, vg.time_frame_delta*4.0f, d->v_lpf );
v3_lerp( d->w_lpf, part->obj.rb.w, vg.time_frame_delta*4.0f, d->w_lpf );
- v3_copy( d->co_lpf, player->rb.co );
- v3_zero( player->rb.v );
- v3_zero( player->rb.w );
+ v3_copy( d->co_lpf, localplayer.rb.co );
+ v3_zero( localplayer.rb.v );
+ v3_zero( localplayer.rb.w );
}
-VG_STATIC void player__dead_animate( player_instance *player ){
- struct player_dead *d = &player->_dead;
+static void player__dead_animate(void){
+ struct player_dead *d = &player_dead;
struct player_dead_animator *animator = &d->animator;
- struct player_ragdoll *rd = &player->ragdoll;
- struct player_avatar *av = player->playeravatar;
- struct skeleton *sk = &av->sk;
+ struct player_ragdoll *rd = &localplayer.ragdoll;
+ struct skeleton *sk = &localplayer.skeleton;
m4x3f transforms[ 32 ];
/* root transform */
- q_m3x3( player->rb.q, transforms[0] );
- v3_copy( player->rb.co, transforms[0][3] );
+ q_m3x3( localplayer.rb.q, transforms[0] );
+ v3_copy( localplayer.rb.co, transforms[0][3] );
- v4_copy( player->rb.q, animator->transforms[0].q );
- v3_copy( player->rb.co, animator->transforms[0].co );
+ v4_copy( localplayer.rb.q, animator->transforms[0].q );
+ v3_copy( localplayer.rb.co, animator->transforms[0].co );
/* colliders with bones transforms */
for( int i=0; i<rd->part_count; i++ ){
}
}
-VG_STATIC void player__dead_pose( player_instance *player, player_pose *pose ){
- struct player_dead *d = &player->_dead;
- struct player_dead_animator *animator = &d->animator;
- struct player_ragdoll *rd = &player->ragdoll;
- struct player_avatar *av = player->playeravatar;
- struct skeleton *sk = &av->sk;
+static void player__dead_pose( void *_animator, player_pose *pose ){
+ struct player_dead_animator *animator = _animator;
+ struct player_ragdoll *rd = &localplayer.ragdoll;
+ struct skeleton *sk = &localplayer.skeleton;
pose->type = k_player_pose_type_fk_2;
pose->board.lean = 0.0f;
}
}
-VG_STATIC void player__dead_post_animate( player_instance *player ){
- player->cam_velocity_influence = 1.0f;
+static void player__dead_post_animate(void){
+ localplayer.cam_velocity_influence = 1.0f;
+}
+
+static void player__dead_im_gui(void){
}
-VG_STATIC void player__dead_im_gui ( player_instance *player ){
+static void player__dead_transition(void){
+ localplayer.subsystem = k_player_subsystem_dead;
+ copy_localplayer_to_ragdoll( &localplayer.ragdoll, localplayer.rb.v );
+ struct ragdoll_part *part =
+ &localplayer.ragdoll.parts[ localplayer.id_hip-1 ];
+ v3_copy( part->obj.rb.co, player_dead.co_lpf );
+ v3_copy( part->obj.rb.v, player_dead.v_lpf );
+ v3_copy( part->obj.rb.w, player_dead.w_lpf );
}
-VG_STATIC void player__dead_transition ( player_instance *player ){
- player->subsystem = k_player_subsystem_dead;
- copy_avatar_pose_to_ragdoll( player->playeravatar, &player->ragdoll,
- player->rb.v );
-
- struct player_avatar *av = player->playeravatar;
- struct ragdoll_part *part = &player->ragdoll.parts[ av->id_hip-1 ];
- struct player_dead *d = &player->_dead;
- v3_copy( part->obj.rb.co, d->co_lpf );
- v3_copy( part->obj.rb.v, d->v_lpf );
- v3_copy( part->obj.rb.w, d->w_lpf );
+static void player__dead_animator_exchange( bitpack_ctx *ctx, void *data ){
+ struct player_dead_animator *animator = data;
+
+ for( u32 i=0; i<localplayer.skeleton.bone_count; i ++ ){
+ bitpack_qv3f( ctx, 24, -1024.0f, 1024.0f, animator->transforms[i].co );
+ bitpack_qquat( ctx, animator->transforms[i].q );
+ }
}
#endif /* PLAYER_DEAD_C */