You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-04 17:04:49 +00:00
Fix audio samples not being able to be "finished"
This commit is contained in:
@@ -1220,6 +1220,12 @@ void AudioServer::start_playback_stream(Ref<AudioStreamPlayback> p_playback, con
|
||||
void AudioServer::stop_playback_stream(Ref<AudioStreamPlayback> p_playback) {
|
||||
ERR_FAIL_COND(p_playback.is_null());
|
||||
|
||||
// Handle sample playback.
|
||||
if (p_playback->get_is_sample() && p_playback->get_sample_playback().is_valid()) {
|
||||
AudioServer::get_singleton()->stop_sample_playback(p_playback->get_sample_playback());
|
||||
return;
|
||||
}
|
||||
|
||||
AudioStreamPlaybackListNode *playback_node = _find_playback_list_node(p_playback);
|
||||
if (!playback_node) {
|
||||
return;
|
||||
@@ -1358,6 +1364,10 @@ void AudioServer::set_playback_highshelf_params(Ref<AudioStreamPlayback> p_playb
|
||||
bool AudioServer::is_playback_active(Ref<AudioStreamPlayback> p_playback) {
|
||||
ERR_FAIL_COND_V(p_playback.is_null(), false);
|
||||
|
||||
if (p_playback->get_is_sample() && p_playback->get_sample_playback().is_valid()) {
|
||||
return sample_playback_list.has(p_playback->get_sample_playback());
|
||||
}
|
||||
|
||||
AudioStreamPlaybackListNode *playback_node = _find_playback_list_node(p_playback);
|
||||
if (!playback_node) {
|
||||
return false;
|
||||
@@ -1818,11 +1828,13 @@ void AudioServer::unregister_sample(const Ref<AudioSample> &p_sample) {
|
||||
void AudioServer::start_sample_playback(const Ref<AudioSamplePlayback> &p_playback) {
|
||||
ERR_FAIL_COND_MSG(p_playback.is_null(), "Parameter p_playback is null.");
|
||||
AudioDriver::get_singleton()->start_sample_playback(p_playback);
|
||||
sample_playback_list.ordered_insert(p_playback);
|
||||
}
|
||||
|
||||
void AudioServer::stop_sample_playback(const Ref<AudioSamplePlayback> &p_playback) {
|
||||
ERR_FAIL_COND_MSG(p_playback.is_null(), "Parameter p_playback is null.");
|
||||
AudioDriver::get_singleton()->stop_sample_playback(p_playback);
|
||||
sample_playback_list.erase(p_playback);
|
||||
}
|
||||
|
||||
void AudioServer::set_sample_playback_pause(const Ref<AudioSamplePlayback> &p_playback, bool p_paused) {
|
||||
|
||||
Reference in New Issue
Block a user