add skybox editor
[carveJwlIkooP6JGAAIwe30JlM.git] / player_skate.c
index 0cd5e35bd510a4b28d7d98e5761e82ee70dc7ad2..cbf43ec36fc57837463f29be2d6ffd43195248f3 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;
@@ -762,6 +765,7 @@ static void skate_apply_trick_model(void){
       if( (v3_length2(state->trick_vel) >= 0.0001f ) &&
           state->trick_time > 0.2f)
       {
+         vg_info( "player fell off due to lack of skill\n" );
          player__dead_transition( k_player_die_type_feet );
       }
 
@@ -1220,16 +1224,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;
       }
 
@@ -2212,6 +2209,7 @@ static void player__skate_update(void){
 
    if( world->water.enabled ){
       if( localplayer.rb.co[1]+0.25f < world->water.height ){
+         vg_info( "player fell off due to being in water\n" );
          player__networked_sfx( k_player_subsystem_walk, 32, 
                                 k_player_walk_soundeffect_splash,
                                 localplayer.rb.co, 1.0f );
@@ -2495,6 +2493,7 @@ begin_collision:;
       v3_lerp( start_co, localplayer.rb.co, t, localplayer.rb.co );
       rb_update_matrices( &localplayer.rb );
 
+      vg_info( "player fell of due to hitting head\n" );
       player__dead_transition( k_player_die_type_head );
       return;
    }
@@ -2606,7 +2605,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 ); 
@@ -2660,6 +2659,7 @@ begin_collision:;
    f32 nforce = v3_length(normal_total);
    if( nforce > 4.0f ){
       if( nforce > 17.6f ){
+         vg_info( "player fell off due to hitting ground too hard\n" );
          v3_muladds( localplayer.rb.v, normal_total, -1.0f, localplayer.rb.v );
          player__dead_transition( k_player_die_type_feet );
          return;
@@ -3507,6 +3507,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 ],