X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_glide.h;h=f8f6dd99dffee4de2a9d85f47d91c8c6b025826f;hb=refs%2Fheads%2Frigidbody;hp=9889eb4f35f322ed13d669fdb1c5cc339ddba694;hpb=c8309ca41f8953d6aaa97cd8cbf625640346b80d;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_glide.h b/player_glide.h index 9889eb4..f8f6dd9 100644 --- a/player_glide.h +++ b/player_glide.h @@ -2,6 +2,7 @@ #define PLAYER_GLIDE_H #include "player.h" +#include "trail.h" struct player_glide { struct skeleton_anim *anim_glide; @@ -12,6 +13,14 @@ struct player_glide { } animator; + /* this sucks */ + struct remote_glider_animator { + v3f root_co; + v4f root_q; + f32 s; + } + remote_animator; + v3f info_lift, info_slip, info_drag; @@ -36,6 +45,9 @@ struct player_glide { } parts[4]; + u32 trail_count; + v3f trail_positions[2]; + mdl_context glider; GLuint *glider_textures; glmesh glider_mesh; @@ -79,6 +91,19 @@ static player_glide = { } }; +static trail_system trails_glider[] = { +{ + .width = 0.035f, + .lifetime = 5.0f, + .min_dist = 0.5f +}, +{ + .width = 0.035f, + .lifetime = 5.0f, + .min_dist = 0.5f +}, +}; + static void player_glide_pre_update(void); static void player_glide_update(void); static void player_glide_post_update(void); @@ -91,6 +116,13 @@ static void player_glide_bind(void); static void player_glide_transition(void); static bool glider_physics( v2f steer ); static void player_glide_animator_exchange( bitpack_ctx *ctx, void *data ); +static void player_glide_render( camera *cam, world_instance *world, + player_pose *pose ); +static void render_glider_model( camera *cam, world_instance *world, + m4x3f mmdl, enum board_shader shader ); +static void +player_glide_remote_animator_exchange( bitpack_ctx *ctx, void *data ); +static void player_glide_equip_glider(void); struct player_subsystem_interface static player_subsystem_glide = { .pre_update = player_glide_pre_update,