refactor rewind tape 1
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.c
index cbefd25249a7be24b4e04f62419487458a35eefc..5d86c94e9dc0a6db201f2d5e3d7b241cce7de5a9 100644 (file)
@@ -294,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 );
@@ -321,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();
 }
 
@@ -351,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 );