X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player.h;h=77c63db3ae355ed68b7006fd4d5ca1ea69f5853a;hb=b615f03b922d155f9449d2a23d3cc18eed320ed3;hp=ec24b865a130c314a085a9bf1875ed18ce705f47;hpb=7fb317c87e6d6a0a2a0de714b278ff8763254657;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player.h b/player.h index ec24b86..77c63db 100644 --- a/player.h +++ b/player.h @@ -1,6 +1,13 @@ #ifndef PLAYER_H #define PLAYER_H +enum player_subsystem{ + k_player_subsystem_walk = 0, + k_player_subsystem_skate = 1, + k_player_subsystem_dead = 2, + k_player_subsystem_drive = 3 +}; + #include "player_ragdoll.h" #include "player_render.h" #include "player_model.h" @@ -9,6 +16,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 @@ -41,6 +49,7 @@ struct player_instance{ 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, @@ -81,8 +90,10 @@ struct player_instance{ player_pose holdout_pose; float holdout_time; + struct board_pose board_pose; + /* - * Rewind + * Rewind (OLD SYSTEM) * ---------------------------------------------------- */ int rewinding, rewind_sound_wait; @@ -100,17 +111,18 @@ struct player_instance{ dist_accum; double rewind_start, rewind_time; + /* + * Replay + * ------------------------------------------------- + */ + replay_buffer replay; + /* * Subsystems * ------------------------------------------------- */ - enum player_subsystem{ - k_player_subsystem_walk = 0, - k_player_subsystem_skate = 1, - k_player_subsystem_dead = 2, - k_player_subsystem_drive = 3 - } + enum player_subsystem subsystem, subsystem_gate; @@ -207,6 +219,8 @@ void( *_player_post_animate[])( player_instance *player ) = player__drive_post_animate }; + +__attribute__((deprecated)) VG_STATIC void( *_player_restore[] )( player_instance *player ) = { @@ -216,6 +230,25 @@ void( *_player_restore[] )( player_instance *player ) = NULL }; +VG_STATIC +void( *_player_store_state[] )( player_instance *player ) = +{ + NULL, + NULL, + NULL, + NULL +}; + +VG_STATIC +void( *_player_load_state_lerp[] )( player_instance *player, + void *A, void *B, f32 t ) = +{ + NULL, + NULL, + NULL, + NULL +}; + PLAYER_API void player__debugtext( int size, const char *fmt, ... ); PLAYER_API void player__create( player_instance *inst ); PLAYER_API void player__use_avatar( player_instance *player,