X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player.h;h=9757030d3fc201c4439edaea39e2b06f11aedbca;hb=4fa9aa9a1e09940e91cc30e171e3de0606515ef3;hp=029a34eca6cc9023efea4d465b6645c17cfd5c49;hpb=333430b27b5f9f73cbe9ad7921a4735aaff444f1;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player.h b/player.h index 029a34e..9757030 100644 --- a/player.h +++ b/player.h @@ -3,6 +3,7 @@ #include "skaterift.h" #include "player_common.h" +#include "network_compression.h" enum player_subsystem{ k_player_subsystem_walk = 0, @@ -43,6 +44,8 @@ struct player_subsystem_interface{ void(*animate)(void); void(*pose)( void *animator, player_pose *pose ); void(*post_animate)(void); + void(*network_animator_exchange)( bitpack_ctx *ctx, void *data ); + void(*sfx_oneshot)( u8 id, v3f pos, f32 volume ); void *animator_data; u32 animator_size; @@ -92,15 +95,26 @@ struct { v3f cam_land_punch, cam_land_punch_v; ent_gate *gate_waiting; - int immobile; + /* + * Network + * -------------------------------------------------- + */ + u16 boundary_hash; + struct net_sfx { + u8 system, priority, id; + f32 subframe, volume; + v3f location; + } + sfx_buffer[4]; + u32 sfx_buffer_count; + /* * Animation * -------------------------------------------------- */ - struct player_avatar *playeravatar; struct player_ragdoll ragdoll; struct player_model fallback_model; @@ -118,6 +132,27 @@ struct { */ enum player_subsystem subsystem; /* .. prev */ + + /* + * Rendering + */ + mdl_context skeleton_meta; + struct skeleton skeleton; + + u32 id_hip, + id_chest, + id_ik_hand_l, + id_ik_hand_r, + id_ik_elbow_l, + id_ik_elbow_r, + id_head, + id_ik_foot_l, + id_ik_foot_r, + id_ik_knee_l, + id_ik_knee_r, + id_wheel_l, + id_wheel_r, + id_board; } static localplayer = { .rb = { @@ -143,7 +178,6 @@ struct player_subsystem_interface static *player_subsystems[] = { */ static void player__debugtext( int size, const char *fmt, ... ); -static void player__use_avatar( struct player_avatar *av ); static void player__use_mesh( glmesh *mesh ); static void player__use_texture( vg_tex2d *tex ); static void player__use_model( u16 reg_id ); @@ -153,14 +187,20 @@ static void player__pre_update(void); static void player__update(void); static void player__post_update(void); -static void player__pass_gate( ent_gate *gate ); +static void player__pass_gate( u32 id ); static void player__im_gui(void); static void player__setpos( v3f pos ); static void player__spawn( ent_spawn *rp ); static void player__kill(void); -static void player__begin_holdout(void); +static void player__begin_holdout( v3f offset ); static int localplayer_cmd_respawn( int argc, const char *argv[] ); static void player_apply_transport_to_cam( m4x3f transport ); +static void player__clear_sfx_buffer(void); +static void player__networked_sfx( u8 system, u8 priority, u8 id, + v3f pos, f32 volume ); +static void net_sfx_exchange( bitpack_ctx *ctx, struct net_sfx *sfx ); +static void net_sfx_play( struct net_sfx *sfx ); + #endif /* PLAYER_H */