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 struct player_instance
18 /* transform definition */
19 rigidbody rb
, rb_gate_storage
;
20 v3f angles
, angles_storage
;
23 m3x3f basis
, invbasis
, basis_gate
;
24 world_instance
*viewable_world
;
28 * ---------------------------
33 k_cam_firstperson
= 1,
37 float camera_type_blend
;
39 v3f fpv_offset
, /* expressed relative to rigidbody */
41 fpv_viewpoint
, /* expressed relative to neck bone inverse final */
49 v3f cam_override_angles
;
50 float cam_override_fov
;
51 float cam_override_strength
;
53 float cam_velocity_influence
,
54 cam_velocity_coefficient
,
55 cam_velocity_constant
,
56 cam_velocity_coefficient_smooth
,
57 cam_velocity_constant_smooth
,
58 cam_velocity_influence_smooth
,
62 ent_gate
*gate_waiting
;
65 * Input TODO: move this
66 * --------------------------------
68 struct input_binding
*input_js1h
,
89 * --------------------------------------------------
92 struct player_avatar
*playeravatar
;
93 struct player_model
*playermodel
;
94 struct player_ragdoll ragdoll
;
95 struct player_board
*board
;
97 player_pose holdout_pose
;
102 * ----------------------------------------------------
104 int rewinding
, rewind_sound_wait
;
113 ent_gate
*rewind_gate
;
115 float rewind_total_length
, rewind_predicted_time
,
117 double rewind_start
, rewind_time
;
121 * -------------------------------------------------
124 enum player_subsystem
{
125 k_player_subsystem_walk
= 0,
126 k_player_subsystem_skate
= 1,
127 k_player_subsystem_dead
= 2,
128 k_player_subsystem_drive
= 3
133 struct player_skate _skate
;
134 struct player_walk _walk
;
135 struct player_dead _dead
;
136 struct player_drive _drive
;
142 * ---------------------------------------------------------
146 void (*_player_system_register
[])(void) =
148 player__walk_register
,
149 player__skate_register
,
155 void (*_player_bind
[])( player_instance
*player
) =
164 void (*_player_reset
[])( player_instance
*player
, ent_spawn
*rp
) =
173 void (*_player_pre_update
[])( player_instance
*player
) =
175 player__walk_pre_update
,
176 player__skate_pre_update
,
178 player__drive_pre_update
182 void( *_player_update
[])( player_instance
*player
) =
185 player__skate_update
,
191 void( *_player_post_update
[])( player_instance
*player
) =
193 player__walk_post_update
,
194 player__skate_post_update
,
196 player__drive_post_update
200 void( *_player_im_gui
[])( player_instance
*player
) =
203 player__skate_im_gui
,
209 void( *_player_animate
[])( player_instance
*player
, player_animation
*dest
) =
211 player__walk_animate
,
212 player__skate_animate
,
213 player__dead_animate
,
214 player__drive_animate
218 void( *_player_post_animate
[])( player_instance
*player
) =
220 player__walk_post_animate
,
221 player__skate_post_animate
,
222 player__dead_post_animate
,
223 player__drive_post_animate
227 void( *_player_restore
[] )( player_instance
*player
) =
229 player__walk_restore
,
230 player__skate_restore
,
235 PLAYER_API
void player__debugtext( int size
, const char *fmt
, ... );
236 PLAYER_API
void player__create( player_instance
*inst
);
237 PLAYER_API
void player__use_avatar( player_instance
*player
,
238 struct player_avatar
*av
);
239 PLAYER_API
void player__use_mesh( player_instance
*player
, glmesh
*mesh
);
240 PLAYER_API
void player__use_texture( player_instance
*player
, vg_tex2d
*tex
);
241 PLAYER_API
void player__bind( player_instance
*player
);
242 PLAYER_API
void player__pre_update( player_instance
*player
);
243 PLAYER_API
void player__update( player_instance
*player
);
244 PLAYER_API
void player__post_update( player_instance
*player
);
246 PLAYER_API
void player__pass_gate( player_instance
*player
, ent_gate
*gate
);
247 PLAYER_API
void player__im_gui( player_instance
*player
);
248 PLAYER_API
void player__spawn( player_instance
*player
, ent_spawn
*rp
);
249 PLAYER_API
void player__kill( player_instance
*player
);
254 #include "player_common.c"
255 #include "player_walk.c"
256 #include "player_skate.c"
257 #include "player_dead.c"
258 #include "player_drive.c"
259 #include "player_render.c"
260 #include "player_ragdoll.c"
262 #endif /* PLAYER_H */