plish
[carveJwlIkooP6JGAAIwe30JlM.git] / player_walk.h
1 #ifndef PLAYER_WALK_H
2 #define PLAYER_WALK_H
3
4 #include "player_api.h"
5
6 struct player_walk
7 {
8 rb_capsule collider;
9
10 struct
11 {
12 #if 0
13 v3f angles;
14 float heading_angle;
15 #endif
16
17 v3f prev_pos;
18 v3f drop_in_target,
19 drop_in_foot_anchor,
20 drop_in_start,
21 drop_in_normal;
22
23 float drop_in_start_angle,
24 drop_in_angle;
25
26 enum walk_activity
27 {
28 k_walk_activity_air,
29 k_walk_activity_ground,
30 k_walk_activity_sleep,
31 k_walk_activity_immobile
32 }
33 activity;
34
35 enum walk_outro
36 {
37 k_walk_outro_none,
38 k_walk_outro_jump_to_air,
39 k_walk_outro_drop_in
40 }
41 outro_type;
42
43 struct skeleton_anim *outro_anim;
44 double outro_start_time;
45 }
46 state,
47 state_gate_storage;
48
49 enum mdl_surface_prop surface;
50 struct skeleton_anim *anim_walk, *anim_run, *anim_idle, *anim_jump,
51 *anim_jump_to_air, *anim_drop_in;
52
53 float blend_fly,
54 blend_run,
55 blend_walk,
56
57 move_speed,
58 walk_timer;
59 };
60
61 VG_STATIC void player__walk_pre_update ( player_instance *player );
62 VG_STATIC void player__walk_update ( player_instance *player );
63 VG_STATIC void player__walk_post_update ( player_instance *player );
64 VG_STATIC void player__walk_animate ( player_instance *player,
65 player_animation *anim );
66 VG_STATIC void player__walk_post_animate( player_instance *player );
67 VG_STATIC void player__walk_im_gui ( player_instance *player );
68 VG_STATIC void player__walk_bind ( player_instance *player );
69 VG_STATIC void player__walk_transition ( player_instance *player, v3f angles );
70
71 #endif /* PLAYER_WALK_H */