load in preview images to dynamic rt textures
[carveJwlIkooP6JGAAIwe30JlM.git] / world_load.c
index e2c2bb3f3c6c783304f8e0a540713e325f4792ec..d7f4afb8a3b3fd3088f129760fa22df40cacbbd9 100644 (file)
@@ -177,7 +177,7 @@ static void skaterift_world_load_thread( void *_args ){
    vg_strnull( &path, path_buf, 4096 );
 
    assert( reg );
-   addon_get_content_folder( reg, &path );
+   addon_get_content_folder( reg, &path, 1 );
 
    vg_str folder = path;
    if( !vg_strgood( &folder ) ) {
@@ -300,19 +300,19 @@ static void skaterift_change_world_start( addon_reg *reg ){
 
       vg_linear_clear( vg_mem.scratch ); /* ?? */
       vg_info( "unloading old worlds\n" );
-      
-      for( u32 i=1; i<vg_list_size(world_static.instances); i++ ){
-         world_instance *inst = &world_static.instances[i];
 
-         if( inst->status == k_world_status_loaded ){
-            inst->status = k_world_status_unloading;
-            world_fadeout_audio( inst );
-         }
+      world_instance *client_world = 
+         &world_static.instances[ k_world_purpose_client ];
+
+      if( client_world->status == k_world_status_loaded ){
+         client_world->status = k_world_status_unloading;
+         world_fadeout_audio( client_world );
       }
 
       world_static.instance_addons[ k_world_purpose_client ] = reg;
       network_send_item( k_netmsg_playeritem_world1 );
       relink_all_remote_player_worlds();
+      world_unlink_nonlocal( &world_static.instances[k_world_purpose_hub] );
    }
 }
 
@@ -326,7 +326,7 @@ static int skaterift_load_world_command( int argc, const char *argv[] ){
 
       u32 reg_id = addon_match( &q );
       if( reg_id != 0xffffffff ){
-         addon_reg *reg = get_addon_from_index( k_addon_type_world, reg_id );
+         addon_reg *reg = get_addon_from_index( k_addon_type_world, reg_id, 0 );
          skaterift_change_world_start( reg );
       }
       else {
@@ -336,12 +336,16 @@ static int skaterift_load_world_command( int argc, const char *argv[] ){
    else {
       vg_info( "worlds availible to load:\n" );
          
-      for( int i=0; i<addon_count(k_addon_type_world); i ++ ){
-         addon_reg *w = get_addon_from_index( k_addon_type_world, i );
+      for( int i=0; i<addon_count(k_addon_type_world,0); i ++ ){
+         addon_reg *w = get_addon_from_index( k_addon_type_world, i, 0);
 
          char buf[ADDON_UID_MAX];
          addon_alias_uid( &w->alias, buf );
-         vg_info( "  %s\n", buf );
+
+         if( w->flags & ADDON_REG_HIDDEN )
+            vg_info( "  %s [hidden]\n", buf );
+         else
+            vg_info( "  %s\n", buf );
       }
    }