X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_render.c;h=3fe93369c09226e7eb2fde5344af36b4edd4f977;hb=2dd61c7f0185ec525658ca398801f46e6adccf23;hp=49a67c1ce2244eebe5e583888025900478c3fe36;hpb=09be4380a98386d6494946fbd3369458f8e7f267;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_render.c b/player_render.c index 49a67c1..3fe9336 100644 --- a/player_render.c +++ b/player_render.c @@ -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 );