+#include "player_common.h"
+#include "player_walk.h"
+#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
+
+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;
+ v3f angles;
+
+ v4f qbasis;
+ m3x3f basis, invbasis, basis_gate;
+ world_instance *viewable_world;
+
+ /*
+ * Camera management
+ * ---------------------------
+ */
+ camera cam;
+ struct player_cam_controller cam_control;
+
+ v3f cam_override_pos;
+ v3f cam_override_angles;
+ float cam_override_fov;
+ float cam_override_strength;
+ 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;
+
+ v3f cam_land_punch, cam_land_punch_v;
+ ent_gate *gate_waiting;
+
+ int immobile;
+
+ /*
+ * Animation
+ * --------------------------------------------------
+ */
+
+ struct player_avatar *playeravatar;
+ struct player_ragdoll ragdoll;
+ struct player_model fallback_model;
+
+ u16 board_view_slot, playermodel_view_slot;
+
+ player_pose holdout_pose;
+ float holdout_time;
+
+ struct board_pose board_pose;
+
+ /*
+ * Replay
+ * -------------------------------------------------
+ */
+ replay_buffer replay;
+
+ /*
+ * Subsystems
+ * -------------------------------------------------
+ */
+
+ enum player_subsystem subsystem; /* .. prev */
+
+ struct player_skate _skate;
+ struct player_walk _walk;
+ struct player_dead _dead;
+ struct player_drive _drive;
+}
+static localplayer;