+ localplayer.board_view_slot =
+ addon_cache_create_viewer( k_addon_type_board, board_reg_id );
+ localplayer.playermodel_view_slot =
+ addon_cache_create_viewer( k_addon_type_player, player_reg_id );
+
+ vg_msg world = kvsav;
+ if( vg_msg_seekframe( &world, "world", 0 ) ){
+ addon_alias q;
+
+ /* world */
+ skaterift_read_addon_alias( &world, "alias", k_addon_type_world, &q );
+ u32 reg_id = addon_match( &q );
+ if( reg_id != 0xffffffff ){
+ addon_reg *reg = get_addon_from_index( k_addon_type_world, reg_id );
+
+ world_static.load_state = k_world_loader_load;
+ struct world_load_args args = {
+ .purpose = k_world_purpose_client,
+ .reg = reg
+ };
+ skaterift_world_load_thread( &args );
+
+ world_set_active_instance( vg_msg_seekkvu32( &world, "index", 0 ) );
+ world_static.active_trigger_volume_count = 0;
+ localplayer.viewable_world = world_current_instance();
+ }
+
+ vg_msg_cmd position = vg_msg_seekkv( &world, "position", 0 );
+ v3f pos;
+ vg_msg_convert_num( &position, k_vg_msg_float|k_vg_msg_32b, 3, pos );
+
+ if( v3_length2(pos) > 1.0f )
+ player__setpos( &localplayer, pos );