#define SKATE_CCD
+typedef struct jump_info jump_info;
+
struct player_skate
{
struct
enum skate_activity
{
k_skate_activity_air,
+ k_skate_activity_air_to_grind,
k_skate_activity_ground,
k_skate_activity_undefined,
k_skate_activity_grind_any,
v3f trick_vel, /* measured in units of TAU/s */
trick_euler; /* measured in units of TAU */
float trick_time;
-
-
float gravity_bias;
-#if 0
- m3x3f velocity_bias,
- velocity_bias_pstep;
- v3f apex;
-#endif
v3f up_dir;
-
v3f head_position;
int lift_frames;
v2f grab_mouse_delta;
int charging_jump, jump_dir;
- float jump_charge;
+ float jump_charge,
+ slap;
double jump_time;
double start_push,
double air_start;
v3f air_init_v,
air_init_co;
+
+ v4f smoothed_rotation;
}
state,
state_gate_storage;
v3f truckv0[2];
v2f wobble;
+ audio_channel *aud_main, *aud_slide, *aud_air;
+ enum mdl_surface_prop surface, audio_surface;
+
/*
* Physics
* ----------------------------------------------------
float substep,
substep_delta;
- struct land_prediction
+ struct jump_info
{
v3f log[50];
v3f n;
enum prediction_type
{
k_prediction_none,
+ k_prediction_unset,
k_prediction_land,
k_prediction_grind
}
u32 colour;
}
- predictions[32];
- u32 prediction_count;
+ possible_jumps[36];
+ u32 possible_jump_count;
+
float land_dist;
v3f land_normal;
grind_vec,
grind_dir;
- u32 frames_since_activity_change;
+ u32 grind_cooldown;
float grind_strength;
player_animation *anim );
VG_STATIC void player__skate_post_animate ( player_instance *player );
VG_STATIC void player__skate_reset ( player_instance *player,
- struct respawn_point *rp );
+ ent_spawn *rp );
VG_STATIC void player__skate_clear_mechanics( player_instance *player );
VG_STATIC void player__skate_reset_animator( player_instance *player );