6 VG_STATIC
void player__dead_update ( player_instance
*player
)
8 player_ragdoll_iter( &player
->ragdoll
);
11 VG_STATIC
void player__dead_animate ( player_instance
*player
){
15 VG_STATIC
void player__dead_pose ( player_instance
*player
){
16 player_pose
*pose
= &player
->pose
;
17 v3_zero( pose
->root_co
);
18 q_identity( pose
->root_q
);
20 for( int i
=0; i
<vg_list_size(pose
->keyframes
); i
++ ){
21 /* FUUUUTUUREEEE: squangle the rigidbodies back into OK keyframes */
22 v3_zero( pose
->keyframes
[i
].co
);
23 v3_fill( pose
->keyframes
[i
].s
, 1.0f
);
24 q_identity( pose
->keyframes
[i
].q
);
28 VG_STATIC
void player__dead_post_animate( player_instance
*player
){
29 struct player_avatar
*av
= player
->playeravatar
;
30 struct player_dead
*d
= &player
->_dead
;
32 copy_ragdoll_pose_to_avatar( &player
->ragdoll
, player
->playeravatar
);
33 player
->cam_velocity_influence
= 1.0f
;
35 struct ragdoll_part
*part
= &player
->ragdoll
.parts
[ av
->id_hip
-1 ];
39 rb_extrapolate( &part
->obj
.rb
, ext_co
, ext_q
);
41 v3_lerp( d
->co_lpf
, ext_co
, vg
.time_frame_delta
*4.0f
, d
->co_lpf
);
42 v3_lerp( d
->v_lpf
, part
->obj
.rb
.v
, vg
.time_frame_delta
*4.0f
, d
->v_lpf
);
43 v3_lerp( d
->w_lpf
, part
->obj
.rb
.w
, vg
.time_frame_delta
*4.0f
, d
->w_lpf
);
45 v3_copy( d
->co_lpf
, player
->rb
.co
);
46 v3_zero( player
->rb
.v
);
47 v3_zero( player
->rb
.w
);
50 VG_STATIC
void player__dead_im_gui ( player_instance
*player
){
54 VG_STATIC
void player__dead_transition ( player_instance
*player
){
55 player
->subsystem
= k_player_subsystem_dead
;
56 copy_avatar_pose_to_ragdoll( player
->playeravatar
, &player
->ragdoll
,
59 struct player_avatar
*av
= player
->playeravatar
;
60 struct ragdoll_part
*part
= &player
->ragdoll
.parts
[ av
->id_hip
-1 ];
61 struct player_dead
*d
= &player
->_dead
;
62 v3_copy( part
->obj
.rb
.co
, d
->co_lpf
);
63 v3_copy( part
->obj
.rb
.v
, d
->v_lpf
);
64 v3_copy( part
->obj
.rb
.w
, d
->w_lpf
);
67 #endif /* PLAYER_DEAD_C */