- mdl;
-}
-player =
-{
- .on_board = 0,
-
- .collide_front = { .type = k_rb_shape_sphere, .inf.sphere.radius = 0.3f },
- .collide_back = { .type = k_rb_shape_sphere, .inf.sphere.radius = 0.3f }
-};
-
-/*
- * API
- */
-static float *player_get_pos(void);
-static void player_kill(void);
-static float *player_cam_pos(void);
+ 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;
+ v2f cam_override_angles;
+ float cam_override_strength;
+
+ 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;
+
+ ent_gate *gate_waiting;
+
+ /*
+ * Input
+ * --------------------------------
+ */
+ struct input_binding *input_js1h,
+ *input_js1v,
+ *input_js2h,
+ *input_js2v,
+ *input_jump,
+ *input_push,
+ *input_trick0,
+ *input_trick1,
+ *input_trick2,
+ *input_walk,
+ *input_walkh,
+ *input_walkv,
+ *input_use,
+ *input_reset,
+ *input_grab,
+ *input_camera;
+
+ /*
+ * Animation
+ * --------------------------------------------------
+ */
+
+
+ struct player_avatar *playeravatar;
+ struct player_model *playermodel;
+ struct player_board *playerboard;
+ struct player_ragdoll ragdoll;
+
+ 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;