X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player.h;h=2d31e46e28aa8188bae035d5e591fba2c37446c1;hb=1d06671f87a9d24596fc6808d8e0db889a818750;hp=0a7486013716a670bfb57de29e7c031550f29ed1;hpb=f24a8cdd8ea6c3d762d26de2fc0700599bedbcad;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player.h b/player.h index 0a74860..2d31e46 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,15 +37,19 @@ #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 -struct player_instance -{ +static i32 k_cinema_fixed = 0; +static f32 k_cinema = 0.0f; +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; @@ -28,37 +60,17 @@ 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, - 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, cam_velocity_coefficient, cam_velocity_constant, cam_velocity_coefficient_smooth, cam_velocity_constant_smooth, - cam_velocity_influence_smooth, - cam_land_punch, - cam_land_punch_v; + cam_velocity_influence_smooth; + v3f cam_land_punch, cam_land_punch_v; ent_gate *gate_waiting; int immobile; @@ -69,46 +81,21 @@ struct player_instance */ struct player_avatar *playeravatar; - struct player_model *playermodel; struct player_ragdoll ragdoll; - //struct player_board *board; - struct dynamic_board *board_view_slot; + struct player_model fallback_model; + u16 board_view_slot, playermodel_view_slot; + + player_pose pose; 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; - /* * 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; @@ -123,8 +110,7 @@ static localplayer; */ VG_STATIC -void (*_player_system_register[])(void) = -{ +void (*_player_system_register[])(void) = { player__walk_register, player__skate_register, NULL, @@ -132,8 +118,7 @@ void (*_player_system_register[])(void) = }; VG_STATIC -void (*_player_bind[])( player_instance *player ) = -{ +void (*_player_bind[])( player_instance *player ) = { player__walk_bind, player__skate_bind, NULL, @@ -141,8 +126,7 @@ void (*_player_bind[])( player_instance *player ) = }; VG_STATIC -void (*_player_reset[])( player_instance *player, ent_spawn *rp ) = -{ +void (*_player_reset[])( player_instance *player, ent_spawn *rp ) = { player__walk_reset, player__skate_reset, NULL, @@ -150,8 +134,7 @@ void (*_player_reset[])( player_instance *player, ent_spawn *rp ) = }; VG_STATIC -void (*_player_pre_update[])( player_instance *player ) = -{ +void (*_player_pre_update[])( player_instance *player ) = { player__walk_pre_update, player__skate_pre_update, NULL, @@ -159,8 +142,7 @@ void (*_player_pre_update[])( player_instance *player ) = }; VG_STATIC -void( *_player_update[])( player_instance *player ) = -{ +void( *_player_update[])( player_instance *player ) = { player__walk_update, player__skate_update, player__dead_update, @@ -168,17 +150,15 @@ void( *_player_update[])( player_instance *player ) = }; VG_STATIC -void( *_player_post_update[])( player_instance *player ) = -{ +void( *_player_post_update[])( player_instance *player ) = { player__walk_post_update, player__skate_post_update, - NULL, + player__dead_post_update, player__drive_post_update }; VG_STATIC -void( *_player_im_gui[])( player_instance *player ) = -{ +void( *_player_im_gui[])( player_instance *player ) = { player__walk_im_gui, player__skate_im_gui, NULL, @@ -186,8 +166,7 @@ void( *_player_im_gui[])( player_instance *player ) = }; VG_STATIC -void( *_player_animate[])( player_instance *player, player_animation *dest ) = -{ +void( *_player_animate[])( player_instance *player ) = { player__walk_animate, player__skate_animate, player__dead_animate, @@ -195,29 +174,29 @@ void( *_player_animate[])( player_instance *player, player_animation *dest ) = }; VG_STATIC -void( *_player_post_animate[])( player_instance *player ) = -{ +void( *_player_pose[] )( player_instance *player, player_pose *pose ) = { + player__walk_pose, + player__skate_pose, + player__dead_pose, + player__drive_pose, +}; + +VG_STATIC +void( *_player_post_animate[])( player_instance *player ) = { player__walk_post_animate, player__skate_post_animate, player__dead_post_animate, player__drive_post_animate }; -VG_STATIC -void( *_player_restore[] )( player_instance *player ) = -{ - player__walk_restore, - player__skate_restore, - 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, struct player_avatar *av ); PLAYER_API void player__use_mesh( player_instance *player, glmesh *mesh ); PLAYER_API void player__use_texture( player_instance *player, vg_tex2d *tex ); +PLAYER_API void player__use_model( player_instance *player, u16 reg_id ); + PLAYER_API void player__bind( player_instance *player ); PLAYER_API void player__pre_update( player_instance *player ); PLAYER_API void player__update( player_instance *player ); @@ -225,18 +204,12 @@ PLAYER_API void player__post_update( player_instance *player ); PLAYER_API void player__pass_gate( player_instance *player, ent_gate *gate ); PLAYER_API void player__im_gui( player_instance *player ); +PLAYER_API void player__setpos( player_instance *player, v3f pos ); PLAYER_API void player__spawn( player_instance *player, ent_spawn *rp ); PLAYER_API void player__kill( player_instance *player ); +PLAYER_API void player__begin_holdout( player_instance *player ); -/* implementation */ - -#include "player.c" -#include "player_common.c" -#include "player_walk.c" -#include "player_skate.c" -#include "player_dead.c" -#include "player_drive.c" -#include "player_render.c" -#include "player_ragdoll.c" +VG_STATIC int localplayer_cmd_respawn( int argc, const char *argv[] ); +VG_STATIC void player_apply_transport_to_cam( m4x3f transport ); #endif /* PLAYER_H */