#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;
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 );
}
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;
}
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 );
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;
}
* 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 );
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;
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 ],