review activity switching
[carveJwlIkooP6JGAAIwe30JlM.git] / player_render.c
index 49a67c1ce2244eebe5e583888025900478c3fe36..3fe93369c09226e7eb2fde5344af36b4edd4f977 100644 (file)
@@ -175,20 +175,16 @@ VG_STATIC void player_animate( player_instance *player ){
       _player_post_animate[ player->subsystem ]( player );
 }
 
-VG_STATIC void player_animate_from_replay( player_instance *player ){
+VG_STATIC void player_animate_from_replay( player_instance *player,
+                                           replay_buffer *replay ){
    /* TODO: frame blending */
-
    player_animation res;
-   replay_frame *frame = player->replay.cursor_frame;
+   replay_frame *frame = replay->cursor_frame;
 
    if( frame ){
       memcpy( &res, &frame->anim, sizeof(frame->anim) );
       memcpy( &frame->board_pose, &player->board_pose, 
               sizeof(player->board_pose) );
-      v3_copy( frame->cam_pos, player->cam_override_pos );
-      v3_copy( frame->cam_angles, player->cam_override_angles );
-      player->cam_override_fov = frame->cam_fov;
-      player->cam_override_strength = 1.0f;
    }
    else return;
 
@@ -196,10 +192,9 @@ VG_STATIC void player_animate_from_replay( player_instance *player ){
    skeleton_apply_pose( sk, res.pose, k_anim_apply_absolute );
 }
 
-VG_STATIC void player_record_replay( player_instance *player, int force ){
-   /* replay recorder */
-   replay_buffer *replay = &player->replay;
-
+VG_STATIC 
+void player_record_replay_frame( player_instance *player, 
+                                 replay_buffer *replay, int force_gamestate ){
    f64 delta      = 9999999.9,
        statedelta = 9999999.9;
 
@@ -213,7 +208,7 @@ VG_STATIC void player_record_replay( player_instance *player, int force ){
              k_gamestate_rate = 0.5;
 
    u16 gamestates = 0;
-   if( statedelta > k_gamestate_rate || force /* or switching */ ){
+   if( statedelta > k_gamestate_rate || force_gamestate /* or switching */ ){
       gamestates = 1;
    }
    
@@ -259,27 +254,7 @@ VG_STATIC void player_record_replay( player_instance *player, int force ){
 }
 
 VG_STATIC void player__pre_render( player_instance *player ){
-   if( player->replay.control == k_replay_control_none ){
-      player->cam_override_strength = 0.0f;
-      player_animate( player );
-
-      if( button_down( k_srbind_reset ) && !player->immobile ){
-         audio_lock();
-         audio_oneshot( &audio_rewind[4], 1.0f, 0.0f );
-         audio_unlock();
-
-         player_record_replay( player, 1 );
-         player->replay.control = k_replay_control_scrub;
-      }
-      else
-         player_record_replay( player, 0 );
-   }
-   else {
-      player->cam_override_strength = 1.0f-skaterift.time_rate;
-      player_replay_control_update( player );
-      player_animate_from_replay( player );
-   }
-
+   player_animate( player );
    player__cam_iterate( player );
 
    /* shadowing/ao info */
@@ -324,7 +299,7 @@ VG_STATIC void render_board( camera *cam, world_instance *world,
 
       render_fb_inverse_ratio( gpipeline.fb_main, inverse );
 
-      inverse[2] = main_camera.farz-main_camera.nearz;
+      inverse[2] = skaterift.cam.farz-skaterift.cam.nearz;
 
       shader_model_board_view_uInverseRatioDepth( inverse );
       render_fb_inverse_ratio( NULL, inverse );
@@ -449,7 +424,7 @@ VG_STATIC void render_playermodel( camera *cam, world_instance *world,
    render_fb_bind_texture( gpipeline.fb_main, 2, 1 );
    v3f inverse;
    render_fb_inverse_ratio( gpipeline.fb_main, inverse );
-   inverse[2] = main_camera.farz-main_camera.nearz;
+   inverse[2] = skaterift.cam.farz-skaterift.cam.nearz;
 
    shader_model_character_view_uInverseRatioDepth( inverse );
    render_fb_inverse_ratio( NULL, inverse );