void AudioManager::play_sample_playlist(SamplePlaylist *playlist, float volume) { AudioSource *src; if (!playlist->started){ src = request_source(&playlist->source_idx); if (src){ playlist->it = playlist->samples.begin(); src->set_sample((*playlist->it)); src->set_volume(volume); src->set_playback_volume(volume); src->play(); playlist->it++; playlist->started = true; } } else{ src = get_audio_source(playlist->source_idx); if (src && !src->is_playing()){ if (!(playlist->it == playlist->samples.end())){ src->set_sample((*playlist->it)); src->set_volume(volume); src->set_playback_volume(volume); src->play(); playlist->it++; } } } if (playlist->loop && playlist->it == playlist->samples.end()) playlist->it = playlist->samples.begin(); }
void AudioManager::play_sample(AudioSample *sample, float volume, AUDIO_PLAYMODE mode, const Vector3 &position, int *src_idx) { AudioSource *source = request_source(src_idx); if (source){ source->set_sample(sample); source->set_volume(volume); source->set_playback_volume(volume); source->set_looping((bool)mode); source->set_position(position); source->play(); } }