}
}
- for( int j=0; j<rd->part_count; j++ ){
- struct ragdoll_part *pj = &rd->parts[j];
-
- if( run_sim ){
- v4f plane = {0.0f,1.0f,0.0f,0.0f};
- rb_effect_simple_bouyency( &pj->obj.rb, plane,
- k_ragdoll_floatyiness,
- k_ragdoll_floatydrag );
+ if( world->water.enabled ){
+ for( int j=0; j<rd->part_count; j++ ){
+ struct ragdoll_part *pj = &rd->parts[j];
+
+ if( run_sim ){
+ rb_effect_simple_bouyency( &pj->obj.rb, world->water.plane,
+ k_ragdoll_floatyiness,
+ k_ragdoll_floatydrag );
+ }
}
}
struct player_skate *s = &player->_skate;
world_instance *world = world_current_instance();
+ if( world->water.enabled ){
+ if( player->rb.co[1]+0.25f < world->water.height ){
+ audio_oneshot_3d( &audio_splash, player->rb.co, 40.0f, 1.0f );
+ player__skate_kill_audio( player );
+ player__dead_transition( player );
+ return;
+ }
+ }
+
v3_copy( player->rb.co, s->state.prev_pos );
s->state.activity_prev = s->state.activity;
#include "player.h"
#include "input.h"
+#include "audio.h"
VG_STATIC void player_walk_drop_in_vector( player_instance *player, v3f vec )
{
struct player_walk *w = &player->_walk;
v3_copy( player->rb.co, w->state.prev_pos );
+ world_instance *world = world_current_instance();
+
+ if( world->water.enabled ){
+ if( player->rb.co[1]+0.4f < world->water.height ){
+ audio_oneshot_3d( &audio_splash, player->rb.co, 40.0f, 1.0f );
+ player__dead_transition( player );
+ return;
+ }
+ }
+
enum walk_activity prev_state = w->state.activity;
if( player->immobile )
joystick_state( k_srjoystick_steer, steer );
w->move_speed = v2_length( steer );
- world_instance *world = world_current_instance();
/*
* Collision detection