option between water plane / water trigger
[carveJwlIkooP6JGAAIwe30JlM.git] / player_glide.h
1 #pragma once
2 #include "player.h"
3 #include "player_render.h"
4 #include "trail.h"
5
6 struct player_glide
7 {
8 struct skeleton_anim *anim_glide;
9
10 struct player_glide_animator
11 {
12 v3f root_co;
13 v4f root_q;
14 }
15 animator;
16
17 /* this sucks */
18 struct remote_glider_animator
19 {
20 v3f root_co;
21 v4f root_q;
22 f32 s;
23 }
24 remote_animator;
25
26 v3f info_lift,
27 info_slip,
28 info_drag;
29
30 u32 ticker;
31
32 rigidbody rb;
33
34 f32 t;
35
36 struct {
37 v3f co, euler;
38 m4x3f mdl;
39
40 union {
41 rb_capsule inf;
42 f32 r;
43 };
44
45 enum rb_shape shape;
46 bool is_damage;
47 }
48 parts[4];
49
50 u32 trail_count;
51 v3f trail_positions[2];
52
53 mdl_context glider;
54 }
55 extern player_glide;
56 extern struct player_subsystem_interface player_subsystem_glide;
57
58 void player_glide_pre_update(void);
59 void player_glide_update(void);
60 void player_glide_post_update(void);
61 void player_glide_animate(void);
62 void player_glide_pose( void *animator, player_pose *pose );
63
64 void player_glide_post_animate(void);
65 void player_glide_im_gui(void);
66 void player_glide_bind(void);
67 void player_glide_transition(void);
68 bool glider_physics( v2f steer );
69 void player_glide_animator_exchange( bitpack_ctx *ctx, void *data );
70 void player_glide_render( vg_camera *cam, world_instance *world,
71 player_pose *pose );
72 void render_glider_model( vg_camera *cam, world_instance *world,
73 m4x3f mmdl, enum board_shader shader );
74 void player_glide_remote_animator_exchange( bitpack_ctx *ctx, void *data );
75 void player_glide_equip_glider(void);
76 void player_glide_render_effects( vg_camera *cam );
77