-/*
- * Copyright (C) 2021-2022 Mt.ZERO Software, Harry Godden - All Rights Reserved
- */
-
-#ifndef PLAYER_AUDIO_H
-#define PLAYER_AUDIO_H
-
-#include "player.h"
-
-/*
- * Audio
- */
-VG_STATIC void player_audio(void)
-{
-#if 0
- struct player_phys *phys = &player.phys;
-
- static int _air = 0;
-
- int l2 = _air;
- _air = player_skate.activity == k_skate_activity_air;
-
- static double last_revert = -2000.0;
-
-
-
-
- audio_lock();
-
- double revert_delta = vg.time - last_revert;
- if( (phys->controller == k_player_controller_skate) &&
- (!_air && l2) && (revert_delta > 0.7) &&
- (player.air_time > 0.5f) )
- {
- audio_player_set_position( &audio_player_extra, phys->rb.co );
- audio_player_set_flags( &audio_player_extra, AUDIO_FLAG_SPACIAL_3D );
- audio_player_set_vol( &audio_player_extra, 2.0f );
-
- if( (fabsf(phys->slip) > 0.75f) )
- {
- audio_player_playclip( &audio_player_extra, &audio_lands[rand()%2+3] );
- }
- else
- {
- audio_player_playclip( &audio_player_extra, &audio_lands[rand()%3] );
- }
-
- last_revert = vg.time;
- }
-
- static float air = 0.0f;
- air = vg_lerpf( air, player_skate.activity == k_skate_activity_air,
- 5.0f*vg.time_delta );
-
- /* Spacial info */
- v3f ears = { 1.0f,0.0f,0.0f };
- v3f delta;
-
- float *cam = main_camera.transform[3],
- *pos = phys->rb.co;
-
- audio_player_set_position( &audio_player0, phys->rb.co );
- audio_player_set_position( &audio_player1, phys->rb.co );
- audio_player_set_position( &audio_player2, phys->rb.co );
- audio_player_set_position( &audio_player4, phys->rb.co );
- audio_player_set_position( &audio_player_gate, world.render_gate_pos );
- audio_player_set_vol( &audio_player_gate, 5.0f );
-
- v3_sub( phys->rb.co, main_camera.transform[3], delta );
- v3_normalize( delta );
- m3x3_mulv( main_camera.transform, ears, ears );
-
- /* TODO, Make function */
- v3_copy( ears, vg_audio.listener_ears );
- v3_copy( main_camera.transform[3], vg_audio.listener_pos );
-
- /* Tunnel / occlusion */
- audio_sample_occlusion( main_camera.transform[3] );
-
- int sprite_avail = -1;
- for( int i=0; i<vg_list_size(ambient_sprites); i++ )
- {
- if( !audio_player_is_playing( &ambient_sprites[i] ) )
- {
- sprite_avail = i;
- break;
- }
- }
-
- if( sprite_avail != -1 )
- {
- v3f waterpos;
- enum audio_sprite_type sprite_type =
- audio_sample_sprite_random( phys->rb.co, waterpos );
-
- if( sprite_type != k_audio_sprite_type_none )
- {
- audio_player *avail = &ambient_sprites[ sprite_avail ];
-
- audio_player_set_vol( avail, 20.0f );
- audio_player_set_flags( avail, AUDIO_FLAG_SPACIAL_3D );
- audio_player_set_position( avail, waterpos );
-
- if( sprite_type == k_audio_sprite_type_grass )
- {
- audio_player_playclip( avail, &audio_grass[rand()%4] );
- }
- else if( sprite_type == k_audio_sprite_type_water )
- {
- if( world.water.enabled )
- audio_player_playclip( avail, &audio_water[rand()%6] );
- }
- }
- }
-
- if( freecam || player.is_dead ||
- !(phys->controller != k_player_controller_skate))
- {
- audio_player_set_vol( &audio_player0, 0.0f );
- audio_player_set_vol( &audio_player1, 0.0f );
- audio_player_set_vol( &audio_player2, 0.0f );
- audio_player_set_vol( &audio_player3, 0.0f );
- audio_player_set_vol( &audio_player4, 0.0f );
-
- int walk_phase = 0;
- if( vg_fractf(player.walk_timer) > 0.5f )
- walk_phase = 1;
- else
- walk_phase = 0;
-
- if( (player.step_phase != walk_phase) &&
- !(player_walk.activity == k_walk_activity_air) )
- {
- audio_player_set_flags( &audio_player_extra, AUDIO_FLAG_SPACIAL_3D );
- audio_player_set_position( &audio_player_extra, phys->rb.co );
- audio_player_set_vol( &audio_player_extra, 6.0f );
-
- if( player.surface_prop == k_surface_prop_concrete )
- {
- audio_player_playclip(
- &audio_player_extra,
- &audio_footsteps[rand()%vg_list_size(audio_footsteps)]
- );
- }
- else if( player.surface_prop == k_surface_prop_grass )
- {
- audio_player_playclip(
- &audio_player_extra,
- &audio_footsteps_grass[rand()%vg_list_size(audio_footsteps_grass)]
- );
- }
- else if( player.surface_prop == k_surface_prop_wood )
- {
- audio_player_playclip(
- &audio_player_extra,
- &audio_footsteps_wood[rand()%vg_list_size(audio_footsteps_wood)]
- );
- }
- }
-
- player.step_phase = walk_phase;
- }
- else
- {
- /* Composite */
- float speed = vg_minf(v3_length( phys->rb.v )*0.1f,1.0f),
- attn = speed,
- slide = vg_clampf( fabsf(phys->slip), 0.0f, 1.0f ),
- grind = player_skate.activity == k_skate_activity_grind,
- vol0 = (1.0f-air)*attn*(1.0f-slide)*(1.0f-grind),
- vol1 = air *attn*(1.0f-grind),
- vol2 = (1.0f-air)*attn*slide*(1.0f-grind),
- vol4 = grind*2.0f;
-
- audio_player_set_vol( &audio_player0, vol0*vg.time_rate );
- audio_player_set_vol( &audio_player1, vol1*vg.time_rate );
- audio_player_set_vol( &audio_player2, vol2*vg.time_rate );
- audio_player_set_vol( &audio_player4, vol4*vg.time_rate );
-
- 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*vg.time_rate );
- }
-
-#if 0
- world_audio_update( cam, ears );
-#endif
- audio_unlock();
-
- if( player_skate.activity == k_skate_activity_air )
- player.air_time += vg.time_delta;
- else
- player.air_time = 0.0f;
-#endif
-}
-
-#endif /* PLAYER_AUDIO_H */