X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_skate.h;h=1c23b5845395c3dc62f5942059259e949cf7e441;hb=9d5997f1e611b66c7220f7eb388f427032d8da79;hp=e17e983641e8eb77e04076d7fdace839527d05d3;hpb=5a6199fecf8afcff4b4ef2d341a0dfd0e220420d;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_skate.h b/player_skate.h index e17e983..1c23b58 100644 --- a/player_skate.h +++ b/player_skate.h @@ -3,6 +3,10 @@ #include "player_api.h" +#define SKATE_CCD + +typedef struct jump_info jump_info; + struct player_skate { struct @@ -10,26 +14,41 @@ struct player_skate enum skate_activity { k_skate_activity_air, + k_skate_activity_air_to_grind, k_skate_activity_ground, - k_skate_activity_grind + k_skate_activity_undefined, + k_skate_activity_grind_any, + k_skate_activity_grind_boardslide, + k_skate_activity_grind_noseslide, + k_skate_activity_grind_tailslide, + k_skate_activity_grind_back50, + k_skate_activity_grind_front50, + k_skate_activity_grind_5050 } activity, activity_prev; - float steery, + float /* steery, steerx, steery_s, - steerx_s, + steerx_s, */ reverse, slip; + int manual_direction; + + /* tricks */ v3f flip_axis; float flip_time, flip_rate; - m3x3f velocity_bias, - velocity_bias_pstep; - v3f apex; + v3f trick_vel, /* measured in units of TAU/s */ + trick_euler; /* measured in units of TAU */ + float trick_time; + float gravity_bias; + + v3f up_dir; + v3f head_position; int lift_frames; @@ -40,37 +59,78 @@ struct player_skate v2f grab_mouse_delta; int charging_jump, jump_dir; - float jump_charge; - double jump_time; + float jump_charge, + slap; + double jump_time; double start_push, cur_push; v3f prev_pos; - /* FIXME: Sensible names */ + /* initial launch conditions */ + double air_start; + v3f air_init_v, + air_init_co; - v3f vl; -#if 0 - v3f vl, /* 1st */ - posl, dirl; /* 3rd */ -#endif + v4f smoothed_rotation; } state, state_gate_storage; - struct land_prediction + + /* animation */ + struct skeleton_anim *anim_stand, *anim_highg, *anim_slide, + *anim_air, + *anim_push, *anim_push_reverse, + *anim_ollie, *anim_ollie_reverse, + *anim_grabs, *anim_stop; + v3f + board_trick_residualv, + board_trick_residuald; + + float blend_slide, + blend_z, + blend_x, + blend_fly, + blend_stand, + blend_push, + blend_jump, + blend_airdir, + blend_weight; + + /* vectors representing the direction of the axels in localspace */ + 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 jump_info { v3f log[50]; v3f n; v3f apex; - u32 log_length; + v3f v; + + float gravity; + + int log_length; float score, land_dist; enum prediction_type { k_prediction_none, + k_prediction_unset, k_prediction_land, k_prediction_grind } @@ -78,34 +138,28 @@ struct player_skate u32 colour; } - predictions[22]; - u32 prediction_count; + possible_jumps[36]; + u32 possible_jump_count; + float land_dist; v3f land_normal; - /* animation */ - struct skeleton_anim *anim_stand, *anim_highg, *anim_slide, - *anim_air, - *anim_push, *anim_push_reverse, - *anim_ollie, *anim_ollie_reverse, - *anim_grabs, *anim_stop; - rb_sphere sphere_front, sphere_back; - v3f board_offset; - v4f board_rotation; + v3f surface_picture, + weight_distribution, + grind_vec, + grind_dir; - float blend_slide, - blend_z, - blend_x, - blend_fly, - blend_stand, - blend_push, - blend_jump, - blend_airdir; + u32 grind_cooldown; - v2f wobble; + float grind_strength; - float debug_normal_pressure; - u32 device_id_walk; + struct grind_limit + { + v3f ra, n; + float p; + } + limits[3]; + u32 limit_count; }; VG_STATIC void player__skate_bind ( player_instance *player ); @@ -117,11 +171,9 @@ VG_STATIC void player__skate_animate ( player_instance *player, 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 ); - -VG_STATIC void player__skate_transition ( player_instance *player, - v3f init_velocity, - enum skate_activity init_acitivity - ); + ent_spawn *rp ); +VG_STATIC void player__skate_clear_mechanics( player_instance *player ); +VG_STATIC void player__skate_reset_animator( player_instance *player ); +VG_STATIC void player__approximate_best_trajectory( player_instance *player ); #endif /* PLAYER_SKATE_H */