add command for spawning glider
[carveJwlIkooP6JGAAIwe30JlM.git] / player_skate.c
index 0cd5e35bd510a4b28d7d98e5761e82ee70dc7ad2..d9b9c04626e50907e60884495a70484203f6c19a 100644 (file)
@@ -9,6 +9,9 @@
 #include "addon.h"
 
 #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;
@@ -1220,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;
       }
 
@@ -2606,7 +2602,7 @@ begin_collision:;
           * regular dance; calculate velocity & total mass, apply impulse.
           */
 
-         struct contact *ct = &manifold[i];
+         rb_ct *ct = &manifold[i];
          
          v3f rv, delta;
          v3_sub( ct->co, world_cog, delta ); 
@@ -3507,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 ],