1 #ifndef PLAYER_REMOTE_H
2 #define PLAYER_REMOTE_H
6 #include "network_common.h"
8 #define NETWORK_SFX_QUEUE_LENGTH 12
11 struct network_player
{
12 int active
, isfriend
, isblocked
;
14 u16 board_view_slot
, playermodel_view_slot
;
15 enum player_subsystem subsystem
;
17 /* this is set IF they exist in a world that we have loaded */
18 world_instance
*active_world
;
19 int world_match
[ k_world_max
];
20 u32 location_pstr
; /* TODO: valid if active_world set. */
22 /* TODO: Compression with server code */
23 char username
[ NETWORK_USERNAME_MAX
];
24 char items
[k_netmsg_playeritem_max
][ADDON_UID_MAX
];
25 char chat
[ NETWORK_MAX_CHAT
];
35 list
[ NETWORK_MAX_PLAYERS
];
37 struct interp_buffer
{
38 /* collect the most recent 6 frames of animation data */
42 enum player_subsystem subsystem
;
47 union interp_animdata
{
48 /* these aren't accessed directly, just used to take the
49 * max(sizeof) all systems */
50 struct player_skate_animator __skate
;
51 struct player_walk_animator __walk
;
52 struct player_dead_animator __dead
;
53 struct player_basic_info_animator __basic
;
57 frames
[ NETWORK_BUFFERFRAMES
];
61 interp_data
[ NETWORK_MAX_PLAYERS
];
63 struct net_sfx sfx_queue
[ NETWORK_SFX_QUEUE_LENGTH
];
66 struct player_board_pose board_poses
[ NETWORK_MAX_PLAYERS
];
70 f64 last_data_measurement
;
73 char chat_buffer
[ NETWORK_MAX_CHAT
], chat_message
[ NETWORK_MAX_CHAT
];
78 static void player_remote_rx_200_300( SteamNetworkingMessage_t
*msg
);
79 static void remote_player_debug_update(void);
80 static void remote_player_send_playerframe(void);
81 static void animate_remote_player( u32 index
);
82 static void render_remote_players( world_instance
*world
, camera
*cam
);
83 static void relink_all_remote_player_worlds(void);
84 static void player_remote_update_friendflags( struct network_player
*remote
);
86 #endif /* PLAYER_REMOTE_H */