refactor rewind tape 1
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.c
index 7e7652b146f4d290ee157e34270c3c918cdbccf1..5d86c94e9dc0a6db201f2d5e3d7b241cce7de5a9 100644 (file)
@@ -14,7 +14,7 @@
 #if 1
 
 #define SR_NETWORKED
-//#define VG_DEVWINDOW
+#define VG_DEVWINDOW
 
 /* 
  *     system headers
@@ -175,6 +175,7 @@ VG_STATIC void vg_load(void)
    vg_loader_step( load_playermodels, NULL );
   
    /* player setup */
+   local_replay_init( (1024*1024*1)/2 );
    player__create( &localplayer );
    player_avatar_load( &localplayer_avatar, "models/ch_none.mdl" );
    player__use_avatar( &localplayer, &localplayer_avatar );
@@ -293,8 +294,7 @@ VG_STATIC void vg_update_fixed(void)
    vehicle_update_fixed();
 }
 
-VG_STATIC void vg_update_post(void)
-{
+VG_STATIC void vg_update_post(void){
    if( skaterift.op == k_async_op_clientloading ) return;
 
    player__post_update( &localplayer );
@@ -320,7 +320,12 @@ VG_STATIC void vg_update_post(void)
    v3_copy( localplayer.rb.v, vg_audio.external_lister_velocity );
    audio_unlock();
 
-   vg.time_rate = 1.0f-menu.factive;
+   int replay_open = localplayer.replay.control != k_replay_control_none?1:0;
+
+   f32 target = (1-(menu.active||replay_open));
+   vg_slewf( &skaterift.time_rate, target, vg.time_frame_delta * 6.0f );
+
+   vg.time_rate = skaterift.time_rate;
    vehicle_update_post();
 }
 
@@ -350,9 +355,12 @@ VG_STATIC void present_view_with_post_processing(void)
                                      (vg.time_frame_delta*60.0) );
       shader_blitblur_uInverseRatio( inverse );
 
-      v2f menu_blurring;
-      v2_muls( (v2f){ 0.04f, 0.001f }, menu.factive, menu_blurring );
-      shader_blitblur_uOverrideDir( menu_blurring );
+      v2f override;
+      if( menu.active )
+         v2_muls( (v2f){ 0.04f, 0.001f }, 1.0f-skaterift.time_rate, override );
+      else 
+         v2_zero( override );
+      shader_blitblur_uOverrideDir( override );
 
       render_fb_bind_texture( gpipeline.fb_main, 0, 0 );
       render_fb_bind_texture( gpipeline.fb_main, 1, 1 );
@@ -508,6 +516,7 @@ VG_STATIC void vg_gui(void)
    player__im_gui( &localplayer );
    world_instance *world = world_current_instance();
 
+   replay_imgui( &localplayer );
    workshop_form_gui();
    render_view_framebuffer_ui();
 }