glider stuff
[carveJwlIkooP6JGAAIwe30JlM.git] / player_skate.c
index c6ed4e073b6b65233ba98e10879c46ccef72e400..d9b9c04626e50907e60884495a70484203f6c19a 100644 (file)
@@ -11,6 +11,7 @@
 #include "ent_tornado.c"
 #include "vg/vg_rigidbody.h"
 #include "scene_rigidbody.h"
+#include "player_glide.h"
 
 static void player__skate_bind(void){
    struct skeleton *sk = &localplayer.skeleton;
@@ -1222,16 +1223,9 @@ static void player__skate_pre_update(void){
    if( button_down(k_srbind_use) && (v3_length2(state->trick_vel) < 0.01f) ){
       localplayer.subsystem = k_player_subsystem_walk;
 
-      if( state->activity <= k_skate_activity_air_to_grind ){
-         localplayer.subsystem = k_player_subsystem_glide;
-
-         v3_copy( localplayer.rb.co, player_glide.rb.co );
-         v4_copy( localplayer.rb.q,  player_glide.rb.q );
-         v3_copy( localplayer.rb.v,  player_glide.rb.v );
-         v3_copy( localplayer.rb.w,  player_glide.rb.w );
-         rb_update_matrices( &player_glide.rb );
-
-         player__begin_holdout( (v3f){0,0,0} );
+      if( (state->activity <= k_skate_activity_air_to_grind) &&
+           localplayer.have_glider ){
+         player_glide_transition();
          return;
       }
 
@@ -3509,6 +3503,7 @@ static void player__skate_effects( void *_animator, m4x3f *final_mtx,
 static void player__skate_post_animate(void){
    struct player_skate_state *state = &player_skate.state;
    localplayer.cam_velocity_influence = 1.0f;
+   localplayer.cam_dist = 1.8f;
 
    v3f head = { 0.0f, 1.8f, 0.0f };
    m4x3_mulv( localplayer.final_mtx[ localplayer.id_head ],