+static void world_sfd_update( world_instance *world, v3f pos ){
+ if( mdl_arrcount( &world->ent_route ) ){
+ u32 closest = 0;
+ float min_dist = INFINITY;
+
+ for( u32 i=0; i<mdl_arrcount( &world->ent_route ); i++ ){
+ ent_route *route = mdl_arritm( &world->ent_route, i );
+ float dist = v3_dist2( route->board_transform[3], pos );
+
+ if( dist < min_dist ){
+ min_dist = dist;
+ closest = i;
+ }
+ }
+
+ if( (world_sfd.active_route_board != closest) || network_scores_updated ){
+ network_scores_updated = 0;
+ world_sfd.active_route_board = closest;
+ ent_route *route = mdl_arritm( &world->ent_route, closest );
+
+ addon_reg *world_reg = world_static.addon_hub;
+ if( world_static.active_instance )
+ world_reg = world_static.addon_client;
+
+ char mod_uid[ ADDON_UID_MAX ];
+ addon_alias_uid( &world_reg->alias, mod_uid );
+
+ network_request_scoreboard(
+ mod_uid,
+ mdl_pstr( &world->meta, route->pstr_name ),
+ 0 );
+#if 0
+ u32 id = route->anon.official_track_id;
+
+ if( id != 0xffffffff ){
+ struct netmsg_board *local_board =
+ &scoreboard_client_data.boards[id];
+
+ for( int i=0; i<13; i++ ){
+ sfd_encode( i, &local_board->data[27*i] );
+ }
+ }else{
+ sfd_encode( 0, mdl_pstr( &world->meta, route->pstr_name ) );
+ sfd_encode( 1, "No data" );
+ }
+#endif
+ }
+ }
+