#include "addon.h"
#include "font.h"
#include "gui.h"
+#include "ent_miniworld.h"
static i32 k_show_own_name = 0;
.buffer_len = datasize,
.bytes = 0,
};
-
+
+ /* animation
+ * -------------------------------------------------------------*/
+
+ dest->timestamp = frame->timestamp;
+ dest->boundary_hash = frame->boundary_hash;
+
+ struct network_player *player = &netplayers.list[ frame->client ];
+ struct player_subsystem_interface *sys =
+ player_subsystems[ frame->subsystem ];
+
+ if( sys->network_animator_exchange ){
+ memset( &dest->data, 0, sys->animator_size );
+ sys->network_animator_exchange( &ctx, &dest->data );
+ }
+ else {
+ bitpack_bytes( &ctx, sys->animator_size, sys->animator_data );
+ }
/* sfx
* -------------------------------------------------------------*/
dst->subframe = remaining;
}
}
-
- /* animation
- * -------------------------------------------------------------*/
-
- dest->timestamp = frame->timestamp;
- dest->boundary_hash = frame->boundary_hash;
-
- struct network_player *player = &netplayers.list[ frame->client ];
- struct player_subsystem_interface *sys =
- player_subsystems[ frame->subsystem ];
-
- if( sys->network_animator_exchange ){
- memset( &dest->data, 0, sys->animator_size );
- sys->network_animator_exchange( &ctx, &dest->data );
- }
- else {
- bitpack_bytes( &ctx, sys->animator_size, sys->animator_data );
- }
player->subsystem = frame->subsystem;
player->down_bytes += msg->m_cbSize;
.bytes = 0
};
- /* sfx
- * ---------------------------------------------*/
-
- frame->sound_effects = localplayer.sfx_buffer_count;
- for( u32 i=0; i<localplayer.sfx_buffer_count; i ++ )
- net_sfx_exchange( &ctx, &localplayer.sfx_buffer[i] );
-
/* animation
* -----------------------------------------------*/
else
bitpack_bytes( &ctx, sys->animator_size, sys->animator_data );
+ /* sfx
+ * ---------------------------------------------*/
+
+ frame->sound_effects = localplayer.sfx_buffer_count;
+ for( u32 i=0; i<localplayer.sfx_buffer_count; i ++ )
+ net_sfx_exchange( &ctx, &localplayer.sfx_buffer[i] );
+
u32 wire_size = base_size + ctx.bytes;
netplayers.up_bytes += wire_size;
static void remote_players_imgui_world( world_instance *world, m4x4f pv,
f32 max_dist, int geo_cull ){
- ui_flush( k_ui_shader_colour );
+ ui_flush( k_ui_shader_colour, vg.window_x, vg.window_y );
for( u32 i=0; i<NETWORK_MAX_PLAYERS; i++ ){
struct network_player *player = &netplayers.list[i];
v3f co;
remote_player_position( i, co );
- if( player->active_world != world ){
+ if( !player->active_world )
continue;
+
+ /* their in our active subworld */
+ if( player->active_world != world ){
+ m4x3_mulv( global_miniworld.mmdl, co, co );
+ co[1] -= 2.0f; /* HACK lol */
}
f32 d2 = v3_dist2( co, localplayer.rb.co );
player->opacity = vg_lerpf( player->opacity, opacity,
vg.time_frame_delta * 2.0f );
- remote_player_world_gui(
- pv, netplayers.final_mtx[localplayer.skeleton.bone_count*i][3],
- player );
+ remote_player_world_gui( pv, co, player );
vg_ui.colour[3] = player->opacity;
- ui_flush( k_ui_shader_colour );
+ ui_flush( k_ui_shader_colour, vg.window_x, vg.window_y );
}
}
vg_ui.colour[3] = 1.0f;
remote_player_world_gui( pv, localplayer.rb.co, NULL );
- ui_flush( k_ui_shader_colour );
+ ui_flush( k_ui_shader_colour, vg.window_x, vg.window_y );
}
static void chat_escape(void){
UI_TEXTBOX_AUTOFOCUS, &callbacks );
}
else {
- /* TODO: we gotta fix this input fighting crap. */
if( netplayers.chatting == -1 ){
netplayers.chatting = 0;
+ srinput.state = k_input_state_resume;
}
else {
if( (skaterift.activity == k_skaterift_default) &&
button_down( k_srbind_chat ) ){
netplayers.chatting = 1;
netplayers.chat_buffer[0] = '\0';
- srinput.enabled = 0;
+ srinput.state = k_input_state_pause;
}
}
}