Allow default audio bus layout modification

This commit is contained in:
lupoDharkael 2019-04-05 17:19:25 +02:00
parent e16fc72cef
commit 650b698f51
4 changed files with 18 additions and 8 deletions

View file

@ -1004,6 +1004,8 @@ ProjectSettings::ProjectSettings() {
GLOBAL_DEF("application/config/use_custom_user_dir", false);
GLOBAL_DEF("application/config/custom_user_dir_name", "");
GLOBAL_DEF("application/config/project_settings_override", "");
GLOBAL_DEF("audio/default_bus_layout", "res://default_bus_layout.tres");
custom_prop_info["audio/default_bus_layout"] = PropertyInfo(Variant::STRING, "audio/default_bus_layout", PROPERTY_HINT_FILE, "*.tres");
action = Dictionary();
action["deadzone"] = Variant(0.5f);

View file

@ -496,7 +496,8 @@ void DependencyRemoveDialog::ok_pressed() {
res->set_path("");
}
// If the file we are deleting for e.g. the main scene or default environment, we must clear its definition in Project Settings.
// If the file we are deleting for e.g. the main scene, default environment,
// or audio bus layout, we must clear its definition in Project Settings.
if (files_to_delete[i] == ProjectSettings::get_singleton()->get("application/config/icon")) {
ProjectSettings::get_singleton()->set("application/config/icon", "");
}
@ -518,6 +519,9 @@ void DependencyRemoveDialog::ok_pressed() {
if (files_to_delete[i] == ProjectSettings::get_singleton()->get("gui/theme/custom_font")) {
ProjectSettings::get_singleton()->set("gui/theme/custom_font", "");
}
if (files_to_delete[i] == ProjectSettings::get_singleton()->get("audio/default_bus_layout")) {
ProjectSettings::get_singleton()->set("audio/default_bus_layout", "");
}
String path = OS::get_singleton()->get_resource_dir() + files_to_delete[i].replace_first("res://", "/");
print_verbose("Moving to trash: " + path);

View file

@ -1077,14 +1077,16 @@ void EditorAudioBuses::_load_layout() {
void EditorAudioBuses::_load_default_layout() {
Ref<AudioBusLayout> state = ResourceLoader::load("res://default_bus_layout.tres");
String layout_path = ProjectSettings::get_singleton()->get("audio/default_bus_layout");
Ref<AudioBusLayout> state = ResourceLoader::load(layout_path);
if (state.is_null()) {
EditorNode::get_singleton()->show_warning(TTR("There is no 'res://default_bus_layout.tres' file."));
EditorNode::get_singleton()->show_warning(vformat(TTR("There is no '%s' file."), layout_path));
return;
}
edited_path = "res://default_bus_layout.tres";
file->set_text(edited_path.get_file());
edited_path = layout_path;
file->set_text(layout_path.get_file());
AudioServer::get_singleton()->set_bus_layout(state);
_update_buses();
EditorNode::get_singleton()->get_undo_redo()->clear_history();
@ -1213,7 +1215,7 @@ EditorAudioBuses::EditorAudioBuses() {
set_v_size_flags(SIZE_EXPAND_FILL);
edited_path = "res://default_bus_layout.tres";
edited_path = ProjectSettings::get_singleton()->get("audio/default_bus_layout");
file_dialog = memnew(EditorFileDialog);
List<String> ext;

View file

@ -1045,8 +1045,10 @@ void AudioServer::update() {
void AudioServer::load_default_bus_layout() {
if (ResourceLoader::exists("res://default_bus_layout.tres")) {
Ref<AudioBusLayout> default_layout = ResourceLoader::load("res://default_bus_layout.tres");
String layout_path = ProjectSettings::get_singleton()->get("audio/default_bus_layout");
if (ResourceLoader::exists(layout_path)) {
Ref<AudioBusLayout> default_layout = ResourceLoader::load(layout_path);
if (default_layout.is_valid()) {
set_bus_layout(default_layout);
}