1 #ifndef PLAYER_REMOTE_H
2 #define PLAYER_REMOTE_H
6 #include "network_common.h"
7 #include "player_effects.h"
9 #define NETWORK_SFX_QUEUE_LENGTH 12
12 struct network_player
{
13 int active
, isfriend
, isblocked
;
15 u16 board_view_slot
, playermodel_view_slot
;
16 enum player_subsystem subsystem
;
18 /* this is set IF they exist in a world that we have loaded */
19 world_instance
*active_world
;
20 int world_match
[ k_world_max
];
21 u32 location_pstr
; /* TODO: valid if active_world set. */
23 /* TODO: Compression with server code */
24 char username
[ NETWORK_USERNAME_MAX
];
25 char items
[k_netmsg_playeritem_max
][ADDON_UID_MAX
];
26 char chat
[ NETWORK_MAX_CHAT
];
27 char region
[ NETWORK_REGION_MAX
];
38 struct player_effects_data effect_data
;
40 list
[ NETWORK_MAX_PLAYERS
];
42 struct interp_buffer
{
43 /* collect the most recent 6 frames of animation data */
47 enum player_subsystem subsystem
;
52 union interp_animdata
{
53 /* these aren't accessed directly, just used to take the
54 * max(sizeof) all systems */
55 struct player_skate_animator __skate
;
56 struct player_walk_animator __walk
;
57 struct player_dead_animator __dead
;
58 struct player_basic_info_animator __basic
;
62 frames
[ NETWORK_BUFFERFRAMES
];
66 interp_data
[ NETWORK_MAX_PLAYERS
];
68 struct net_sfx sfx_queue
[ NETWORK_SFX_QUEUE_LENGTH
];
71 struct player_board_pose board_poses
[ NETWORK_MAX_PLAYERS
];
75 f64 last_data_measurement
;
78 char chat_buffer
[ NETWORK_MAX_CHAT
], chat_message
[ NETWORK_MAX_CHAT
];
83 static void player_remote_rx_200_300( SteamNetworkingMessage_t
*msg
);
84 static void remote_player_debug_update(void);
85 static void remote_player_send_playerframe(void);
86 static void animate_remote_player( u32 index
);
87 static void render_remote_players( world_instance
*world
, camera
*cam
);
88 static void relink_all_remote_player_worlds(void);
89 static void player_remote_update_friendflags( struct network_player
*remote
);
91 #endif /* PLAYER_REMOTE_H */