示例#1
0
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();
}
示例#2
0
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();
	}
}