X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player.h;h=6ee3112b701165ff9a401c6ed1961d140d3f4fa5;hb=ce0205fd929e5fb1446f8c52fcab344884d82569;hp=dedae18a78f55178f391f35492633f7b1679b304;hpb=22f62f001f21d1b91fefd9fc495c122d9ddf205a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player.h b/player.h index dedae18..6ee3112 100644 --- a/player.h +++ b/player.h @@ -3,12 +3,15 @@ #include "skaterift.h" #include "player_common.h" +#include "network_compression.h" enum player_subsystem{ k_player_subsystem_walk = 0, k_player_subsystem_skate = 1, k_player_subsystem_dead = 2, - k_player_subsystem_drive = 3 + k_player_subsystem_drive = 3, + k_player_subsystem_max, + k_player_subsystem_invalid = 255 }; struct player_cam_controller { @@ -41,9 +44,13 @@ 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; + + const char *name; }; #include "player_ragdoll.h" @@ -88,9 +95,21 @@ 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 * -------------------------------------------------- @@ -106,6 +125,8 @@ struct { player_pose holdout_pose; float holdout_time; + m4x3f *final_mtx; + /* * Subsystems * ------------------------------------------------- @@ -147,7 +168,7 @@ 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 ); @@ -157,4 +178,10 @@ static void player__begin_holdout(void); 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 */