X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player.h;h=7f02ec0eee4e0f09e5b18bded7da3938bd266b61;hb=a9f402f2e336dadff2207dacf69416a66f50c8f8;hp=3d42096d2f420296566a897ebe2f77e5d0079ede;hpb=5f4eb3866525724188461589485ac1aa50d08870;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player.h b/player.h index 3d42096..7f02ec0 100644 --- a/player.h +++ b/player.h @@ -719,6 +719,13 @@ static void player_physics(void) player.jump = 0.0f; player.jump_time = vg_time; + + audio_lock(); + audio_player_set_flags( &audio_player_extra, AUDIO_FLAG_SPACIAL_3D ); + audio_player_set_position( &audio_player_extra, player.rb.co ); + audio_player_set_vol( &audio_player_extra, 3.0f ); + audio_player_playclip( &audio_player_extra, &audio_jumps[rand()%4] ); + audio_unlock(); } } else @@ -802,6 +809,10 @@ static void player_do_motion(void) m3x3_copy( player.vr, player.gate_vr_frame ); m3x3_copy( player.vr_pstep, player.gate_vr_pstep_frame ); + + audio_lock(); + audio_play_oneshot( &audio_gate_lap, 1.0f ); + audio_unlock(); break; } } @@ -1137,7 +1148,37 @@ static void player_animate_camera(void) */ static void player_audio(void) { - sfx_lock(); + static int _ding = 0; + + int last = _ding; + _ding = glfwGetKey(vg_window, GLFW_KEY_C); + + int trigger_ding = 0; + if( _ding && !last ) + trigger_ding = 1; + + static int _air = 0; + + int l2 = _air; + _air = player.in_air; + + static double last_revert = -2000.0; + + + + + audio_lock(); + + double revert_delta = vg_time - last_revert; + if( (!_air && l2) && (fabsf(player.slip) > 0.5f) && (revert_delta > 0.7) ) + { + audio_player_set_position( &audio_player_extra, player.rb.co ); + audio_player_set_flags( &audio_player_extra, AUDIO_FLAG_SPACIAL_3D ); + audio_player_set_vol( &audio_player_extra, 2.0f ); + audio_player_playclip( &audio_player_extra, &audio_lands[rand()%5] ); + + last_revert = vg_time; + } static float air = 0.0f; air = vg_lerpf(air, player.in_air? 1.0f: 0.0f, 5.0f*ktimestep); @@ -1148,48 +1189,55 @@ static void player_audio(void) float *cam = player.camera[3], *pos = player.rb.co; + + if( trigger_ding ) + audio_player_playclip( &audio_player_extra, &audio_ding ); + + audio_player_set_position( &audio_player0, player.rb.co ); + audio_player_set_position( &audio_player1, player.rb.co ); + audio_player_set_position( &audio_player2, player.rb.co ); + audio_player_set_position( &audio_player_gate, world.render_gate_pos ); v3_sub( player.rb.co, player.camera[3], delta ); v3_normalize( delta ); m3x3_mulv( player.camera, ears, ears ); + + /* TODO, Make function */ + v3_copy( ears, vg_audio.listener_ears ); + v3_copy( player.camera[3], vg_audio.listener_pos ); + + /* Tunnel / occlusion */ + audio_sample_occlusion( player.camera[3] ); if( freecam || player.is_dead || !player.on_board ) { - audio_player0.vol = 0.0f; - audio_player1.vol = 0.0f; - audio_player2.vol = 0.0f; - - audio_player0.pan = 0.0f; - audio_player1.pan = 0.0f; - audio_player2.pan = 0.0f; + audio_player_set_vol( &audio_player0, 0.0f ); + audio_player_set_vol( &audio_player1, 0.0f ); + audio_player_set_vol( &audio_player2, 0.0f ); } else { - /* Spacialize 0 */ - audio_spacialize( &audio_player0, pos, cam, ears, 1.0f ); - audio_player1.pan = audio_player0.pan; - audio_player2.pan = audio_player0.pan; - /* Composite */ float speed = vg_minf(v3_length( player.rb.v )*0.1f,1.0f), - attn = audio_player0.vol * speed, + attn = speed, slide = vg_clampf( fabsf(player.slip), 0.0f, 1.0f ), vol0 = (1.0f-air)*attn*(1.0f-slide), vol1 = air *attn, vol2 = (1.0f-air)*attn*slide; + + audio_player_set_vol( &audio_player0, vol0 ); + audio_player_set_vol( &audio_player1, vol1 ); + audio_player_set_vol( &audio_player2, vol2 ); - audio_player1.vol = vol1; - audio_player2.vol = vol2; - audio_player0.vol = vol0; + float reverb_amt = vol0 * audio_occlusion_current * 0.5f; + audio_player_set_pan( &audio_player3, 0.0f ); + audio_player_set_vol( &audio_player3, reverb_amt ); } - - /* Tunnel / occlusion */ - audio_sample_occlusion( player.camera[3] ); - audio_player3.pan = 0.0f; - audio_player3.vol = audio_player0.vol * audio_occlusion_current * 2.0f; +#if 0 world_audio_update( cam, ears ); - sfx_unlock(); +#endif + audio_unlock(); } /*