mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
Merge pull request #106415 from YeldhamDev/desobey_your_master
Ignore changes in "Master" bus while in the Audio Importer
This commit is contained in:
commit
9d7663398a
2 changed files with 37 additions and 0 deletions
|
@ -226,6 +226,28 @@ void AudioStreamImportSettingsDialog::_preview_zoom_offset_changed(double) {
|
|||
_indicator->queue_redraw();
|
||||
}
|
||||
|
||||
void AudioStreamImportSettingsDialog::_reset_master() {
|
||||
master_state.bypass = AudioServer::get_singleton()->is_bus_bypassing_effects(0);
|
||||
master_state.mute = AudioServer::get_singleton()->is_bus_mute(0);
|
||||
master_state.volume = AudioServer::get_singleton()->get_bus_volume_db(0);
|
||||
|
||||
AudioServer::get_singleton()->set_bus_bypass_effects(0, true); // We don't want effects interfering.
|
||||
AudioServer::get_singleton()->set_bus_mute(0, false);
|
||||
AudioServer::get_singleton()->set_bus_volume_db(0, 0);
|
||||
|
||||
// Prevent the modifications from being saved.
|
||||
AudioServer::get_singleton()->set_edited(false);
|
||||
}
|
||||
|
||||
void AudioStreamImportSettingsDialog::_load_master_state() {
|
||||
AudioServer::get_singleton()->set_bus_bypass_effects(0, master_state.bypass);
|
||||
AudioServer::get_singleton()->set_bus_mute(0, master_state.mute);
|
||||
AudioServer::get_singleton()->set_bus_volume_db(0, master_state.volume);
|
||||
|
||||
// Prevent the modifications from being saved.
|
||||
AudioServer::get_singleton()->set_edited(false);
|
||||
}
|
||||
|
||||
void AudioStreamImportSettingsDialog::_audio_changed() {
|
||||
if (!is_visible()) {
|
||||
return;
|
||||
|
@ -237,12 +259,16 @@ void AudioStreamImportSettingsDialog::_audio_changed() {
|
|||
|
||||
void AudioStreamImportSettingsDialog::_play() {
|
||||
if (_player->is_playing()) {
|
||||
_load_master_state();
|
||||
|
||||
// '_pausing' variable indicates that we want to pause the audio player, not stop it. See '_on_finished()'.
|
||||
_pausing = true;
|
||||
_player->stop();
|
||||
_play_button->set_button_icon(get_editor_theme_icon(SNAME("MainPlay")));
|
||||
set_process(false);
|
||||
} else {
|
||||
_reset_master();
|
||||
|
||||
_player->play(_current);
|
||||
_play_button->set_button_icon(get_editor_theme_icon(SNAME("Pause")));
|
||||
set_process(true);
|
||||
|
@ -250,6 +276,8 @@ void AudioStreamImportSettingsDialog::_play() {
|
|||
}
|
||||
|
||||
void AudioStreamImportSettingsDialog::_stop() {
|
||||
_load_master_state();
|
||||
|
||||
_player->stop();
|
||||
_play_button->set_button_icon(get_editor_theme_icon(SNAME("MainPlay")));
|
||||
_current = 0;
|
||||
|
|
|
@ -77,6 +77,15 @@ class AudioStreamImportSettingsDialog : public ConfirmationDialog {
|
|||
String importer;
|
||||
String path;
|
||||
|
||||
struct MasterState {
|
||||
bool mute = false;
|
||||
bool bypass = false;
|
||||
float volume = 0;
|
||||
} master_state;
|
||||
|
||||
void _reset_master();
|
||||
void _load_master_state();
|
||||
|
||||
void _audio_changed();
|
||||
|
||||
static AudioStreamImportSettingsDialog *singleton;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue