rigidbody rb;
+ f32 t;
+
struct {
v3f co, euler;
m4x3f mdl;
};
enum rb_shape shape;
+ bool is_damage;
}
- parts[3];
+ parts[4];
mdl_context glider;
GLuint *glider_textures;
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
}
};
static void player_glide_im_gui(void);
static void player_glide_bind(void);
static void player_glide_transition(void);
-static void player_glide_render( camera *cam, world_instance *world,
- player_pose *pose );
+static bool glider_physics( v2f steer );
struct player_subsystem_interface static player_subsystem_glide = {
.pre_update = player_glide_pre_update,
.post_animate = player_glide_post_animate,
.im_gui = player_glide_im_gui,
.bind = player_glide_bind,
- .render = player_glide_render,
.animator_data = &player_glide.animator,
.animator_size = sizeof(player_glide.animator),