X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player.h;h=6315e1a219c9dadb4b53cae73bdb73bb293585dd;hb=2dd61c7f0185ec525658ca398801f46e6adccf23;hp=e5f3dc741ccf135863886de97074edc06b535d6c;hpb=fdb2376a03749b901ff83f28be54b6dd6caf4b72;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player.h b/player.h index e5f3dc7..6315e1a 100644 --- a/player.h +++ b/player.h @@ -1,6 +1,34 @@ #ifndef PLAYER_H #define PLAYER_H +#include "skaterift.h" + +enum player_subsystem{ + k_player_subsystem_walk = 0, + k_player_subsystem_skate = 1, + k_player_subsystem_dead = 2, + k_player_subsystem_drive = 3 +}; + +struct player_cam_controller { + enum camera_mode{ + k_cam_firstperson = 1, + k_cam_thirdperson = 0 + } + camera_mode; + f32 camera_type_blend; + + v3f fpv_offset, /* expressed relative to rigidbody */ + tpv_offset, + tpv_offset_extra, + fpv_viewpoint, /* expressed relative to neck bone inverse final*/ + fpv_offset_smooth, + fpv_viewpoint_smooth, + tpv_offset_smooth, + tpv_lpf, + cam_velocity_smooth; +}; + #include "player_ragdoll.h" #include "player_render.h" #include "player_model.h" @@ -9,6 +37,7 @@ #include "player_skate.h" #include "player_dead.h" #include "player_drive.h" +#include "player_replay.h" #define PLAYER_REWIND_FRAMES 60*4 #define RESET_MAX_TIME 45.0 @@ -19,8 +48,8 @@ static i32 k_invert_y = 0; struct player_instance{ /* transform definition */ - rigidbody rb, rb_gate_storage; - v3f angles, angles_storage; + rigidbody rb; + v3f angles; v4f qbasis; m3x3f basis, invbasis, basis_gate; @@ -31,28 +60,7 @@ struct player_instance{ * --------------------------- */ camera cam; - - enum camera_mode{ - k_cam_firstperson = 1, - k_cam_thirdperson = 0 - } - camera_mode; - float camera_type_blend; - - v3f fpv_offset, /* expressed relative to rigidbody */ - tpv_offset, - tpv_offset_extra, - fpv_viewpoint, /* expressed relative to neck bone inverse final */ - fpv_offset_smooth, - fpv_viewpoint_smooth, - tpv_offset_smooth, - tpv_lpf, - cam_velocity_smooth; - - v3f cam_override_pos; - v3f cam_override_angles; - float cam_override_fov; - float cam_override_strength; + struct player_cam_controller cam_control; f32 cam_trackshake; float cam_velocity_influence, @@ -63,7 +71,6 @@ struct player_instance{ cam_velocity_influence_smooth; v3f cam_land_punch, cam_land_punch_v; - ent_gate *gate_waiting; int immobile; @@ -82,38 +89,14 @@ struct player_instance{ player_pose holdout_pose; float holdout_time; - /* - * Rewind - * ---------------------------------------------------- - */ - int rewinding, rewind_sound_wait; - - struct rewind_frame{ - v3f pos; - v3f ang; - } - *rewind_buffer; - u32 rewind_length; - float rewind_accum; - ent_gate *rewind_gate; - - float rewind_total_length, rewind_predicted_time, - dist_accum; - double rewind_start, rewind_time; + struct board_pose board_pose; /* * Subsystems * ------------------------------------------------- */ - enum player_subsystem{ - k_player_subsystem_walk = 0, - k_player_subsystem_skate = 1, - k_player_subsystem_dead = 2, - k_player_subsystem_drive = 3 - } - subsystem, - subsystem_gate; + enum player_subsystem subsystem; /* .. prev */ struct player_skate _skate; struct player_walk _walk; @@ -209,10 +192,20 @@ void( *_player_post_animate[])( player_instance *player ) = }; VG_STATIC -void( *_player_restore[] )( player_instance *player ) = +void( *_player_store_state[] )( player_instance *player ) = { - player__walk_restore, - player__skate_restore, + NULL, + NULL, + NULL, + NULL +}; + +VG_STATIC +void( *_player_load_state_lerp[] )( player_instance *player, + void *A, void *B, f32 t ) = +{ + NULL, + NULL, NULL, NULL };