4 #include "network_common.h"
5 #include "player_render.h"
6 #include "player_effects.h"
7 #include "player_api.h"
9 #include "player_skate.h"
10 #include "player_walk.h"
11 #include "player_dead.h"
12 #include "player_basic_info.h"
13 #include "player_glide.h"
15 #define NETWORK_SFX_QUEUE_LENGTH 12
17 struct global_netplayers
19 struct network_player
{
20 int active
, isfriend
, isblocked
;
22 u16 board_view_slot
, playermodel_view_slot
;
23 enum player_subsystem subsystem
;
25 /* this is set IF they exist in a world that we have loaded */
26 world_instance
*active_world
;
27 int world_match
[ k_world_max
];
28 u32 location_pstr
; /* TODO: valid if active_world set. */
30 char username
[ NETWORK_USERNAME_MAX
];
31 char items
[k_netmsg_playeritem_max
][ADDON_UID_MAX
];
32 char chat
[ NETWORK_MAX_CHAT
];
33 char region
[ NETWORK_REGION_MAX
];
44 struct player_effects_data effect_data
;
47 list
[ NETWORK_MAX_PLAYERS
];
49 struct interp_buffer
{
50 /* collect the most recent 6 frames of animation data */
54 enum player_subsystem subsystem
;
59 union interp_animdata
{
60 /* these aren't accessed directly, just used to take the
61 * max(sizeof) all systems */
62 struct player_skate_animator __skate
;
63 struct player_walk_animator __walk
;
64 struct player_dead_animator __dead
;
65 struct player_basic_info_animator __basic
;
69 struct remote_glider_animator data_glider
;
71 frames
[ NETWORK_BUFFERFRAMES
];
75 interp_data
[ NETWORK_MAX_PLAYERS
];
77 struct net_sfx sfx_queue
[ NETWORK_SFX_QUEUE_LENGTH
];
81 struct player_board_pose board_poses
[ NETWORK_MAX_PLAYERS
];
85 f64 last_data_measurement
;
88 char chat_buffer
[ NETWORK_MAX_CHAT
], chat_message
[ NETWORK_MAX_CHAT
];
93 void player_remote_rx_200_300( SteamNetworkingMessage_t
*msg
);
94 void remote_player_debug_update(void);
95 void remote_player_send_playerframe(void);
96 void animate_remote_player( u32 index
);
97 void animate_remote_players(void);
98 void render_remote_players( world_instance
*world
, vg_camera
*cam
);
99 void relink_all_remote_player_worlds(void);
100 void player_remote_update_friendflags( struct network_player
*remote
);
101 void remote_players_init(void);
102 void remote_sfx_pre_update(void);
103 void remote_player_network_imgui( ui_context
*ctx
, m4x4f pv
);
104 void remote_players_imgui_world( ui_context
*ctx
, world_instance
*world
,
105 m4x4f pv
, f32 max_dist
, int geo_cull
);
106 void remote_players_imgui_lobby( ui_context
*ctx
);
107 void remote_players_chat_imgui( ui_context
*ctx
);