4 #include "player_ragdoll.h"
5 #include "player_render.h"
6 #include "player_model.h"
7 #include "player_common.h"
8 #include "player_walk.h"
9 #include "player_skate.h"
10 #include "player_dead.h"
11 #include "player_drive.h"
13 #define PLAYER_REWIND_FRAMES 60*4
14 #define RESET_MAX_TIME 45.0
16 static i32 k_cinema_fixed
= 0;
17 static f32 k_cinema
= 0.0f
;
18 static i32 k_invert_y
= 0;
20 struct player_instance
{
21 /* transform definition */
22 rigidbody rb
, rb_gate_storage
;
23 v3f angles
, angles_storage
;
26 m3x3f basis
, invbasis
, basis_gate
;
27 world_instance
*viewable_world
;
31 * ---------------------------
36 k_cam_firstperson
= 1,
40 float camera_type_blend
;
42 v3f fpv_offset
, /* expressed relative to rigidbody */
44 fpv_viewpoint
, /* expressed relative to neck bone inverse final */
52 v3f cam_override_angles
;
53 float cam_override_fov
;
54 float cam_override_strength
;
57 float cam_velocity_influence
,
58 cam_velocity_coefficient
,
59 cam_velocity_constant
,
60 cam_velocity_coefficient_smooth
,
61 cam_velocity_constant_smooth
,
62 cam_velocity_influence_smooth
;
64 v3f cam_land_punch
, cam_land_punch_v
;
66 ent_gate
*gate_waiting
;
72 * --------------------------------------------------
75 struct player_avatar
*playeravatar
;
76 struct player_ragdoll ragdoll
;
77 struct player_model fallback_model
;
79 u16 board_view_slot
, playermodel_view_slot
;
81 player_pose holdout_pose
;
86 * ----------------------------------------------------
88 int rewinding
, rewind_sound_wait
;
97 ent_gate
*rewind_gate
;
99 float rewind_total_length
, rewind_predicted_time
,
101 double rewind_start
, rewind_time
;
105 * -------------------------------------------------
108 enum player_subsystem
{
109 k_player_subsystem_walk
= 0,
110 k_player_subsystem_skate
= 1,
111 k_player_subsystem_dead
= 2,
112 k_player_subsystem_drive
= 3
117 struct player_skate _skate
;
118 struct player_walk _walk
;
119 struct player_dead _dead
;
120 struct player_drive _drive
;
126 * ---------------------------------------------------------
130 void (*_player_system_register
[])(void) =
132 player__walk_register
,
133 player__skate_register
,
139 void (*_player_bind
[])( player_instance
*player
) =
148 void (*_player_reset
[])( player_instance
*player
, ent_spawn
*rp
) =
157 void (*_player_pre_update
[])( player_instance
*player
) =
159 player__walk_pre_update
,
160 player__skate_pre_update
,
162 player__drive_pre_update
166 void( *_player_update
[])( player_instance
*player
) =
169 player__skate_update
,
175 void( *_player_post_update
[])( player_instance
*player
) =
177 player__walk_post_update
,
178 player__skate_post_update
,
180 player__drive_post_update
184 void( *_player_im_gui
[])( player_instance
*player
) =
187 player__skate_im_gui
,
193 void( *_player_animate
[])( player_instance
*player
, player_animation
*dest
) =
195 player__walk_animate
,
196 player__skate_animate
,
197 player__dead_animate
,
198 player__drive_animate
202 void( *_player_post_animate
[])( player_instance
*player
) =
204 player__walk_post_animate
,
205 player__skate_post_animate
,
206 player__dead_post_animate
,
207 player__drive_post_animate
211 void( *_player_restore
[] )( player_instance
*player
) =
213 player__walk_restore
,
214 player__skate_restore
,
219 PLAYER_API
void player__debugtext( int size
, const char *fmt
, ... );
220 PLAYER_API
void player__create( player_instance
*inst
);
221 PLAYER_API
void player__use_avatar( player_instance
*player
,
222 struct player_avatar
*av
);
223 PLAYER_API
void player__use_mesh( player_instance
*player
, glmesh
*mesh
);
224 PLAYER_API
void player__use_texture( player_instance
*player
, vg_tex2d
*tex
);
225 PLAYER_API
void player__use_model( player_instance
*player
, u16 reg_id
);
227 PLAYER_API
void player__bind( player_instance
*player
);
228 PLAYER_API
void player__pre_update( player_instance
*player
);
229 PLAYER_API
void player__update( player_instance
*player
);
230 PLAYER_API
void player__post_update( player_instance
*player
);
232 PLAYER_API
void player__pass_gate( player_instance
*player
, ent_gate
*gate
);
233 PLAYER_API
void player__im_gui( player_instance
*player
);
234 PLAYER_API
void player__setpos( player_instance
*player
, v3f pos
);
235 PLAYER_API
void player__spawn( player_instance
*player
, ent_spawn
*rp
);
236 PLAYER_API
void player__kill( player_instance
*player
);
238 VG_STATIC
int localplayer_cmd_respawn( int argc
, const char *argv
[] );
239 VG_STATIC
void player_apply_transport_to_cam( m4x3f transport
);
241 #endif /* PLAYER_H */