allow replays to pass through rifts
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.c
index e488f778f0cfa63e613b36bd39ee850a1e8b08e5..ab60a3b3c4c038c8bda40ca7d39d67f3e81cae86 100644 (file)
@@ -85,6 +85,10 @@ static void vg_launch_opt(void){
    if( vg_long_opt( "demo" ) ){
       skaterift.demo_mode = 1;
    }
+
+   if( (arg = vg_long_opt_arg( "world" )) ){
+      skaterift.hub_world = arg;
+   }
 }
 
 static void vg_preload(void){
@@ -160,18 +164,20 @@ static void skaterift_restore_state(void){
 
 static addon_reg *skaterift_mount_world_unloadable( const char *path, u32 ext ){
    addon_reg *reg = addon_mount_local_addon( path, k_addon_type_world, ".mdl" );
+   if( !reg ) vg_fatal_error( "world not found\n" );
    reg->flags |= (ADDON_REG_HIDDEN | ext);
    return reg;
 }
 
 static void skaterift_load_world_content(void){
    /* hub world */
-   addon_reg *hub = skaterift_mount_world_unloadable( "maps/dev_hub", 0 );
+   addon_reg *hub = skaterift_mount_world_unloadable( skaterift.hub_world, 0 );
    skaterift_mount_world_unloadable( "maps/mp_spawn", 
          ADDON_REG_CITY|ADDON_REG_PREMIUM );
    skaterift_mount_world_unloadable( "maps/mp_mtzero", 
          ADDON_REG_MTZERO|ADDON_REG_PREMIUM );
    skaterift_mount_world_unloadable( "maps/dev_tutorial", 0 );
+   skaterift_mount_world_unloadable( "maps/dev_flatworld", 0 );
 
    world_static.load_state = k_world_loader_load;
 
@@ -581,7 +587,9 @@ static void render_main_game(void){
    }
    else{
       player__animate();
-      skaterift_record_frame( &skaterift.replay, 0 );
+      skaterift_record_frame( &skaterift.replay, 
+                              localplayer.deferred_frame_record );
+      localplayer.deferred_frame_record = 0;
    }
    animate_remote_players();
    player__pre_render();
@@ -664,6 +672,9 @@ static void vg_render(void){
 static void vg_gui(void){
    if( skaterift.op == k_async_op_clientloading ) return;
 
+   vg_ui.tex_bg = gpipeline.fb_main->attachments[0].id;
+   render_fb_inverse_ratio( gpipeline.fb_main, vg_ui.bg_inverse_ratio );
+
    menu_update();
    if( skaterift.activity == k_skaterift_menu ){
       glClear( GL_DEPTH_BUFFER_BIT );