glider bugfixes & animation
[carveJwlIkooP6JGAAIwe30JlM.git] / player_glide.h
index 83a4d38e2a871a88605c253e1dd45766a0a81d3e..2e2d1eb288d67ae52f5999d47971263011ef169c 100644 (file)
@@ -32,8 +32,9 @@ struct player_glide {
       };
 
       enum rb_shape shape;
+      bool is_damage;
    }
-   parts[3];
+   parts[4];
 
    mdl_context glider;
    GLuint *glider_textures;
@@ -42,23 +43,39 @@ struct player_glide {
 static player_glide = {
    .parts = {
       {
-         .co    = { 1.0f, 1.0f, -1.0f },
+         .co    = { 1.0f, 0.5f, -1.0f },
          .euler = { VG_TAUf*0.25f,  VG_TAUf*0.125f, 0.0f },
          .shape = k_rb_shape_capsule,
          .inf   = { .h = 2.82842712475f, .r = 0.25f },
       },
       {
-         .co    = { -1.0f, 1.0f, -1.0f },
+         .co    = { -1.0f, 0.5f, -1.0f },
          .euler = { VG_TAUf*0.25f, -VG_TAUf*0.125f, 0.0f },
          .shape = k_rb_shape_capsule,
          .inf   = { .h = 2.82842712475f, .r = 0.25f },
       },
+      {
+         .co    = {  0.0f, 0.5f, 1.0f },
+         .euler = { VG_TAUf*0.25f, VG_TAUf*0.25f, 0.0f },
+         .shape = k_rb_shape_capsule,
+         .inf   = { .h = 6.0f, .r = 0.25f },
+      },
+      {
+         .co    = {  0.0f, -0.5f, 0.0f },
+         .euler = { VG_TAUf*0.25f, VG_TAUf*0.25f, 0.0f },
+         .shape = k_rb_shape_capsule,
+         .inf   = { .h = 2.0f, .r = 0.25f },
+         .is_damage = 1,
+      },
+
+#if 0
       {
          .co    = { 0.0f, 0.0f, 0.0f },
          .euler = { 0.0f, 0.0f, 0.0f },
          .shape = k_rb_shape_sphere,
          .r     = 0.5f
       }
+#endif
    }
 };
 
@@ -71,8 +88,8 @@ static void player_glide_pose( void *animator, player_pose *pose );
 static void player_glide_post_animate(void);
 static void player_glide_im_gui(void);
 static void player_glide_bind(void);
-static void player_glide_transition( bool reverse );
-static bool glider_physics(void);
+static void player_glide_transition(void);
+static bool glider_physics( v2f steer );
 
 struct player_subsystem_interface static player_subsystem_glide = {
    .pre_update = player_glide_pre_update,