basic replayable replays
[carveJwlIkooP6JGAAIwe30JlM.git] / skaterift.c
index cbefd25249a7be24b4e04f62419487458a35eefc..3fec7e0e6a3161ab4dd792aecb223909cc0ede9c 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,11 @@ 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;
+   f32 target = 1.0f-(f32)(menu.active||k_replay_test);
+   skaterift.time_rate = vg_lerpf( skaterift.time_rate, target,
+                                   vg.time_frame_delta * 6.0f );
+
+   vg.time_rate = skaterift.time_rate;
    vehicle_update_post();
 }
 
@@ -351,9 +354,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 );