X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_device_dead.h;h=56055714d63bf6b24fab80af58f1e60646ee48ef;hb=5430d708f058626a6c8fed7dd2aa8ba5f0a06c84;hp=9a0ed20940049aab2a269bd81eb53877455322d6;hpb=ff8fcac9582d07bc1ccbf08421d6ffec1758a755;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_device_dead.h b/player_device_dead.h index 9a0ed20..5605571 100644 --- a/player_device_dead.h +++ b/player_device_dead.h @@ -5,97 +5,60 @@ #include "skeleton.h" #include "player_model.h" +VG_STATIC struct player_device_dead { -}; - -VG_STATIC void player_dead_pre_update( player_interface *player, - player_attachment *at ) -{ -} - -VG_STATIC void player_dead_update( player_interface *player, - player_attachment *at ) -{ - player_ragdoll_iter( &player->ragdoll ); -} - -VG_STATIC void player_dead_post_update( player_interface *player, - player_attachment *at ) -{ -} - -VG_STATIC void player_dead_ui( player_interface *player, - player_attachment *at ) -{ + int _; } +localplayer_device_dead; -VG_STATIC void player_dead_bind( player_interface *player, - player_attachment *at ) +VG_STATIC int player_dead_event( player_device *dev, player_interface *player, + enum player_device_event_type ev, void *data ) { - copy_avatar_pose_to_ragdoll( player->playeravatar, &player->ragdoll, - player->rb.v ); -} - -/* FIXME: This should be an optional function */ -VG_STATIC void player_dead_animate( player_interface *player, - player_attachment *at ) -{ - v3_zero( at->pose_root_co ); - q_identity( at->pose_root_q ); - - for( int i=0; ipose ); i ++ ) + if( ev == k_player_device_event_update ) { - v3_zero( at->pose[i].co ); - v3_fill( at->pose[i].s, 1.0f ); - q_identity( at->pose[i].q ); + player_ragdoll_iter( &player->ragdoll ); } -} - -VG_STATIC void player_dead_post_animate( player_interface *player, - player_attachment *at ) -{ - struct player_avatar *av = player->playeravatar; - - v3_zero( at->cam_1st.pos ); - v3_zero( at->cam_1st.angles ); - at->cam_1st.fov = 90.0f; - - /* FIXME: This overwrites pose blending, however, do we need to blend with - * this device, anyway? */ - copy_ragdoll_pose_to_avatar( &player->ragdoll, player->playeravatar ); - -#if 0 - v3f vp = {-0.1f,1.8f,0.0f}, - vd = {-1.0f,0.0f,0.0f}; - - m4x3_mulv( av->sk.final_mtx[ av->id_head-1 ], vp, cam->pos ); - m3x3_mulv( av->sk.final_mtx[ av->id_head-1 ], vd, vd ); - - v3_zero( cam->angles ); - cam->fov = 119.0f; - - skate_camera_vector_look( cam, vd, 1.0f, 0.0f ); -#endif -} + else if( ev == k_player_device_event_custom_transition ) + { + copy_avatar_pose_to_ragdoll( player->playeravatar, &player->ragdoll, + player->rb.v ); + } + else if( ev == k_player_device_event_animate ) + { + v3_zero( dev->pose_root_co ); + q_identity( dev->pose_root_q ); + + for( int i=0; ipose ); i ++ ) + { + v3_zero( dev->pose[i].co ); + v3_fill( dev->pose[i].s, 1.0f ); + q_identity( dev->pose[i].q ); + } + } + else if( ev == k_player_device_event_post_animate ) + { + struct player_avatar *av = player->playeravatar; + + v3_zero( dev->cam_1st.pos ); + v3_zero( dev->cam_1st.angles ); + dev->cam_1st.fov = 90.0f; + + /* FIXME: This overwrites pose blending, however, do we need to blend with + * this device, anyway? */ + copy_ragdoll_pose_to_avatar( &player->ragdoll, player->playeravatar ); + } + else + return 0; -VG_STATIC void player_dead_transport( player_interface *player, - player_attachment *at, - teleport_gate *gate ) -{ + return 1; } VG_STATIC player_device player_device_dead = { - .pre_update = player_dead_pre_update, - .update = player_dead_update, - .post_update = player_dead_post_update, - .animate = player_dead_animate, - .post_animate = player_dead_post_animate, - .debug_ui = player_dead_ui, - .bind = player_dead_bind, -#if 0 - .pose = player_dead_pose, -#endif + .name = "ragdoll/dead", + .event = player_dead_event, + .storage = &localplayer_device_dead }; + #endif /* PLAYER_DEVICE_DEAD_H */