diff options
Diffstat (limited to 'editor/editor_audio_buses.cpp')
-rw-r--r-- | editor/editor_audio_buses.cpp | 244 |
1 files changed, 94 insertions, 150 deletions
diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp index c80ae5f21b..9a826ab106 100644 --- a/editor/editor_audio_buses.cpp +++ b/editor/editor_audio_buses.cpp @@ -5,8 +5,8 @@ /* GODOT ENGINE */ /* https://godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ -/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ +/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ @@ -40,10 +40,8 @@ #include "servers/audio_server.h" void EditorAudioBus::_update_visible_channels() { - int i = 0; for (; i < cc; i++) { - if (!channel[i].vu_l->is_visible()) { channel[i].vu_l->show(); } @@ -53,7 +51,6 @@ void EditorAudioBus::_update_visible_channels() { } for (; i < CHANNELS_MAX; i++) { - if (channel[i].vu_l->is_visible()) { channel[i].vu_l->hide(); } @@ -64,10 +61,8 @@ void EditorAudioBus::_update_visible_channels() { } void EditorAudioBus::_notification(int p_what) { - switch (p_what) { case NOTIFICATION_READY: { - for (int i = 0; i < CHANNELS_MAX; i++) { channel[i].vu_l->set_under_texture(get_theme_icon("BusVuEmpty", "EditorIcons")); channel[i].vu_l->set_progress_texture(get_theme_icon("BusVuFull", "EditorIcons")); @@ -83,19 +78,18 @@ void EditorAudioBus::_notification(int p_what) { Color bypass_color = EditorSettings::get_singleton()->is_dark_theme() ? Color(0.13, 0.8, 1.0) : Color(0.44, 0.87, 1.0); solo->set_icon(get_theme_icon("AudioBusSolo", "EditorIcons")); - solo->add_theme_color_override("icon_color_pressed", solo_color); + solo->add_theme_color_override("icon_pressed_color", solo_color); mute->set_icon(get_theme_icon("AudioBusMute", "EditorIcons")); - mute->add_theme_color_override("icon_color_pressed", mute_color); + mute->add_theme_color_override("icon_pressed_color", mute_color); bypass->set_icon(get_theme_icon("AudioBusBypass", "EditorIcons")); - bypass->add_theme_color_override("icon_color_pressed", bypass_color); + bypass->add_theme_color_override("icon_pressed_color", bypass_color); - bus_options->set_icon(get_theme_icon("GuiTabMenu", "EditorIcons")); + bus_options->set_icon(get_theme_icon("GuiTabMenuHl", "EditorIcons")); update_bus(); set_process(true); } break; case NOTIFICATION_DRAW: { - if (is_master) { draw_style_box(get_theme_stylebox("disabled", "Button"), Rect2(Vector2(), get_size())); } else if (has_focus()) { @@ -111,7 +105,6 @@ void EditorAudioBus::_notification(int p_what) { } } break; case NOTIFICATION_PROCESS: { - if (cc != AudioServer::get_singleton()->get_bus_channels(get_index())) { cc = AudioServer::get_singleton()->get_bus_channels(get_index()); _update_visible_channels(); @@ -156,7 +149,6 @@ void EditorAudioBus::_notification(int p_what) { } } break; case NOTIFICATION_VISIBILITY_CHANGED: { - for (int i = 0; i < CHANNELS_MAX; i++) { channel[i].peak_l = -100; channel[i].peak_r = -100; @@ -166,7 +158,6 @@ void EditorAudioBus::_notification(int p_what) { set_process(is_visible_in_tree()); } break; case NOTIFICATION_THEME_CHANGED: { - for (int i = 0; i < CHANNELS_MAX; i++) { channel[i].vu_l->set_under_texture(get_theme_icon("BusVuEmpty", "EditorIcons")); channel[i].vu_l->set_progress_texture(get_theme_icon("BusVuFull", "EditorIcons")); @@ -181,11 +172,10 @@ void EditorAudioBus::_notification(int p_what) { mute->set_icon(get_theme_icon("AudioBusMute", "EditorIcons")); bypass->set_icon(get_theme_icon("AudioBusBypass", "EditorIcons")); - bus_options->set_icon(get_theme_icon("GuiTabMenu", "EditorIcons")); + bus_options->set_icon(get_theme_icon("GuiTabMenuHl", "EditorIcons")); } break; case NOTIFICATION_MOUSE_EXIT: case NOTIFICATION_DRAG_END: { - if (hovering_drop) { hovering_drop = false; update(); @@ -195,7 +185,6 @@ void EditorAudioBus::_notification(int p_what) { } void EditorAudioBus::update_send() { - send->clear(); if (is_master) { send->set_disabled(true); @@ -218,9 +207,9 @@ void EditorAudioBus::update_send() { } void EditorAudioBus::update_bus() { - - if (updating_bus) + if (updating_bus) { return; + } updating_bus = true; @@ -229,8 +218,9 @@ void EditorAudioBus::update_bus() { float db_value = AudioServer::get_singleton()->get_bus_volume_db(index); slider->set_value(_scaled_db_to_normalized_volume(db_value)); track_name->set_text(AudioServer::get_singleton()->get_bus_name(index)); - if (is_master) + if (is_master) { track_name->set_editable(false); + } solo->set_pressed(AudioServer::get_singleton()->is_bus_solo(index)); mute->set_pressed(AudioServer::get_singleton()->is_bus_mute(index)); @@ -240,7 +230,6 @@ void EditorAudioBus::update_bus() { TreeItem *root = effects->create_item(); for (int i = 0; i < AudioServer::get_singleton()->get_bus_effect_count(index); i++) { - Ref<AudioEffect> afx = AudioServer::get_singleton()->get_bus_effect(index, i); TreeItem *fx = effects->create_item(root); @@ -263,18 +252,16 @@ void EditorAudioBus::update_bus() { } void EditorAudioBus::_name_changed(const String &p_new_name) { - - if (p_new_name == AudioServer::get_singleton()->get_bus_name(get_index())) + if (p_new_name == AudioServer::get_singleton()->get_bus_name(get_index())) { return; + } String attempt = p_new_name; int attempts = 1; while (true) { - bool name_free = true; for (int i = 0; i < AudioServer::get_singleton()->get_bus_count(); i++) { - if (AudioServer::get_singleton()->get_bus_name(i) == attempt) { name_free = false; break; @@ -317,9 +304,9 @@ void EditorAudioBus::_name_changed(const String &p_new_name) { } void EditorAudioBus::_volume_changed(float p_normalized) { - - if (updating_bus) + if (updating_bus) { return; + } updating_bus = true; @@ -384,7 +371,6 @@ float EditorAudioBus::_scaled_db_to_normalized_volume(float db) { } void EditorAudioBus::_show_value(float slider_value) { - float db; if (Input::get_singleton()->is_key_pressed(KEY_CONTROL)) { // Display the correct (snapped) value when holding Ctrl @@ -415,7 +401,6 @@ void EditorAudioBus::_hide_value_preview() { } void EditorAudioBus::_solo_toggled() { - updating_bus = true; UndoRedo *ur = EditorNode::get_undo_redo(); @@ -428,8 +413,8 @@ void EditorAudioBus::_solo_toggled() { updating_bus = false; } -void EditorAudioBus::_mute_toggled() { +void EditorAudioBus::_mute_toggled() { updating_bus = true; UndoRedo *ur = EditorNode::get_undo_redo(); @@ -442,8 +427,8 @@ void EditorAudioBus::_mute_toggled() { updating_bus = false; } -void EditorAudioBus::_bypass_toggled() { +void EditorAudioBus::_bypass_toggled() { updating_bus = true; UndoRedo *ur = EditorNode::get_undo_redo(); @@ -458,7 +443,6 @@ void EditorAudioBus::_bypass_toggled() { } void EditorAudioBus::_send_selected(int p_which) { - updating_bus = true; UndoRedo *ur = EditorNode::get_undo_redo(); @@ -473,14 +457,13 @@ void EditorAudioBus::_send_selected(int p_which) { } void EditorAudioBus::_effect_selected() { - TreeItem *effect = effects->get_selected(); - if (!effect) + if (!effect) { return; + } updating_bus = true; if (effect->get_metadata(0) != Variant()) { - int index = effect->get_metadata(0); Ref<AudioEffect> effect2 = AudioServer::get_singleton()->get_bus_effect(get_index(), index); if (effect2.is_valid()) { @@ -492,13 +475,14 @@ void EditorAudioBus::_effect_selected() { } void EditorAudioBus::_effect_edited() { - - if (updating_bus) + if (updating_bus) { return; + } TreeItem *effect = effects->get_edited(); - if (!effect) + if (!effect) { return; + } if (effect->get_metadata(0) == Variant()) { Rect2 area = effects->get_item_rect(effect); @@ -523,9 +507,9 @@ void EditorAudioBus::_effect_edited() { } void EditorAudioBus::_effect_add(int p_which) { - - if (updating_bus) + if (updating_bus) { return; + } StringName name = effect_options->get_item_metadata(p_which); @@ -547,24 +531,26 @@ void EditorAudioBus::_effect_add(int p_which) { } void EditorAudioBus::_gui_input(const Ref<InputEvent> &p_event) { - - Ref<InputEventKey> k = p_event; - if (k.is_valid() && k->is_pressed() && k->get_keycode() == KEY_DELETE && !k->is_echo()) { - accept_event(); - emit_signal("delete_request"); - } - Ref<InputEventMouseButton> mb = p_event; - if (mb.is_valid() && mb->get_button_index() == 2 && mb->is_pressed()) { - + if (mb.is_valid() && mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed()) { Vector2 pos = Vector2(mb->get_position().x, mb->get_position().y); bus_popup->set_position(get_global_position() + pos); bus_popup->popup(); } } -void EditorAudioBus::_bus_popup_pressed(int p_option) { +void EditorAudioBus::_effects_gui_input(Ref<InputEvent> p_event) { + Ref<InputEventKey> k = p_event; + if (k.is_valid() && k->is_pressed() && !k->is_echo() && k->get_keycode() == KEY_DELETE) { + TreeItem *current_effect = effects->get_selected(); + if (current_effect && current_effect->get_metadata(0).get_type() == Variant::INT) { + _delete_effect_pressed(0); + accept_event(); + } + } +} +void EditorAudioBus::_bus_popup_pressed(int p_option) { if (p_option == 2) { // Reset volume emit_signal("vol_reset_request"); @@ -577,7 +563,6 @@ void EditorAudioBus::_bus_popup_pressed(int p_option) { } Variant EditorAudioBus::get_drag_data(const Point2 &p_point) { - if (get_index() == 0) { return Variant(); } @@ -602,7 +587,6 @@ Variant EditorAudioBus::get_drag_data(const Point2 &p_point) { } bool EditorAudioBus::can_drop_data(const Point2 &p_point, const Variant &p_data) const { - if (get_index() == 0) { return false; } @@ -617,13 +601,11 @@ bool EditorAudioBus::can_drop_data(const Point2 &p_point, const Variant &p_data) } void EditorAudioBus::drop_data(const Point2 &p_point, const Variant &p_data) { - Dictionary d = p_data; emit_signal("dropped", d["index"], get_index()); } Variant EditorAudioBus::get_drag_data_fw(const Point2 &p_point, Control *p_from) { - TreeItem *item = effects->get_item_at_position(p_point); if (!item) { return Variant(); @@ -647,14 +629,15 @@ Variant EditorAudioBus::get_drag_data_fw(const Point2 &p_point, Control *p_from) } bool EditorAudioBus::can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const { - Dictionary d = p_data; - if (!d.has("type") || String(d["type"]) != "audio_bus_effect") + if (!d.has("type") || String(d["type"]) != "audio_bus_effect") { return false; + } TreeItem *item = effects->get_item_at_position(p_point); - if (!item) + if (!item) { return false; + } effects->set_drop_mode_flags(Tree::DROP_MODE_INBETWEEN); @@ -662,12 +645,12 @@ bool EditorAudioBus::can_drop_data_fw(const Point2 &p_point, const Variant &p_da } void EditorAudioBus::drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) { - Dictionary d = p_data; TreeItem *item = effects->get_item_at_position(p_point); - if (!item) + if (!item) { return; + } int pos = effects->get_drop_section_at_position(p_point); Variant md = item->get_metadata(0); @@ -677,8 +660,9 @@ void EditorAudioBus::drop_data_fw(const Point2 &p_point, const Variant &p_data, if (md.get_type() == Variant::INT) { paste_at = md; - if (pos > 0) + if (pos > 0) { paste_at++; + } if (bus == get_index() && paste_at > effect) { paste_at--; @@ -720,13 +704,14 @@ void EditorAudioBus::drop_data_fw(const Point2 &p_point, const Variant &p_data, } void EditorAudioBus::_delete_effect_pressed(int p_option) { - TreeItem *item = effects->get_selected(); - if (!item) + if (!item) { return; + } - if (item->get_metadata(0).get_type() != Variant::INT) + if (item->get_metadata(0).get_type() != Variant::INT) { return; + } int index = item->get_metadata(0); @@ -741,20 +726,20 @@ void EditorAudioBus::_delete_effect_pressed(int p_option) { } void EditorAudioBus::_effect_rmb(const Vector2 &p_pos) { - TreeItem *item = effects->get_selected(); - if (!item) + if (!item) { return; + } - if (item->get_metadata(0).get_type() != Variant::INT) + if (item->get_metadata(0).get_type() != Variant::INT) { return; + } delete_effect_popup->set_position(get_global_mouse_position()); delete_effect_popup->popup(); } void EditorAudioBus::_bind_methods() { - ClassDB::bind_method("update_bus", &EditorAudioBus::update_bus); ClassDB::bind_method("update_send", &EditorAudioBus::update_send); ClassDB::bind_method("_gui_input", &EditorAudioBus::_gui_input); @@ -770,7 +755,6 @@ void EditorAudioBus::_bind_methods() { } EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) { - buses = p_buses; updating_bus = false; is_master = p_is_master; @@ -790,19 +774,22 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) { HBoxContainer *hbc = memnew(HBoxContainer); vb->add_child(hbc); - solo = memnew(ToolButton); + solo = memnew(Button); + solo->set_flat(true); solo->set_toggle_mode(true); solo->set_tooltip(TTR("Solo")); solo->set_focus_mode(FOCUS_NONE); solo->connect("pressed", callable_mp(this, &EditorAudioBus::_solo_toggled)); hbc->add_child(solo); - mute = memnew(ToolButton); + mute = memnew(Button); + mute->set_flat(true); mute->set_toggle_mode(true); mute->set_tooltip(TTR("Mute")); mute->set_focus_mode(FOCUS_NONE); mute->connect("pressed", callable_mp(this, &EditorAudioBus::_mute_toggled)); hbc->add_child(mute); - bypass = memnew(ToolButton); + bypass = memnew(Button); + bypass->set_flat(true); bypass->set_toggle_mode(true); bypass->set_tooltip(TTR("Bypass")); bypass->set_focus_mode(FOCUS_NONE); @@ -810,12 +797,6 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) { hbc->add_child(bypass); hbc->add_spacer(); - bus_options = memnew(MenuButton); - bus_options->set_h_size_flags(SIZE_SHRINK_END); - bus_options->set_anchor(MARGIN_RIGHT, 0.0); - bus_options->set_tooltip(TTR("Bus options")); - hbc->add_child(bus_options); - Ref<StyleBoxEmpty> sbempty = memnew(StyleBoxEmpty); for (int i = 0; i < hbc->get_child_count(); i++) { Control *child = Object::cast_to<Control>(hbc->get_child(i)); @@ -851,7 +832,7 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) { audioprev_hbc->add_child(audio_value_preview_label); slider->add_child(audio_value_preview_box); - audio_value_preview_box->set_as_toplevel(true); + audio_value_preview_box->set_as_top_level(true); Ref<StyleBoxFlat> panel_style = memnew(StyleBoxFlat); panel_style->set_bg_color(Color(0.0f, 0.0f, 0.0f, 0.8f)); audio_value_preview_box->add_theme_style_override("panel", panel_style); @@ -870,15 +851,15 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) { cc = 0; for (int i = 0; i < CHANNELS_MAX; i++) { - channel[i].vu_l = memnew(TextureProgress); - channel[i].vu_l->set_fill_mode(TextureProgress::FILL_BOTTOM_TO_TOP); + channel[i].vu_l = memnew(TextureProgressBar); + channel[i].vu_l->set_fill_mode(TextureProgressBar::FILL_BOTTOM_TO_TOP); hb->add_child(channel[i].vu_l); channel[i].vu_l->set_min(-80); channel[i].vu_l->set_max(24); channel[i].vu_l->set_step(0.1); - channel[i].vu_r = memnew(TextureProgress); - channel[i].vu_r->set_fill_mode(TextureProgress::FILL_BOTTOM_TO_TOP); + channel[i].vu_r = memnew(TextureProgressBar); + channel[i].vu_r->set_fill_mode(TextureProgressBar::FILL_BOTTOM_TO_TOP); hb->add_child(channel[i].vu_r); channel[i].vu_r->set_min(-80); channel[i].vu_r->set_max(24); @@ -911,6 +892,7 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) { effects->set_allow_rmb_select(true); effects->set_focus_mode(FOCUS_CLICK); effects->set_allow_reselect(true); + effects->connect("gui_input", callable_mp(this, &EditorAudioBus::_effects_gui_input)); send = memnew(OptionButton); send->set_clip_text(true); @@ -926,8 +908,9 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) { ClassDB::get_inheriters_from_class("AudioEffect", &effects); effects.sort_custom<StringName::AlphCompare>(); for (List<StringName>::Element *E = effects.front(); E; E = E->next()) { - if (!ClassDB::can_instance(E->get())) + if (!ClassDB::can_instance(E->get())) { continue; + } Ref<Texture2D> icon = EditorNode::get_singleton()->get_class_icon(E->get()); String name = E->get().operator String().replace("AudioEffect", ""); @@ -936,9 +919,16 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) { effect_options->set_item_icon(effect_options->get_item_count() - 1, icon); } + bus_options = memnew(MenuButton); + bus_options->set_shortcut_context(this); + bus_options->set_h_size_flags(SIZE_SHRINK_END); + bus_options->set_anchor(SIDE_RIGHT, 0.0); + bus_options->set_tooltip(TTR("Bus options")); + hbc->add_child(bus_options); + bus_popup = bus_options->get_popup(); - bus_popup->add_item(TTR("Duplicate")); - bus_popup->add_item(TTR("Delete")); + bus_popup->add_shortcut(ED_SHORTCUT("audio_bus_editor/duplicate_selected_bus", TTR("Duplicate Bus"), KEY_MASK_CMD | KEY_D)); + bus_popup->add_shortcut(ED_SHORTCUT("audio_bus_editor/delete_selected_bus", TTR("Delete Bus"), KEY_DELETE)); bus_popup->set_item_disabled(1, is_master); bus_popup->add_item(TTR("Reset Volume")); bus_popup->connect("index_pressed", callable_mp(this, &EditorAudioBus::_bus_popup_pressed)); @@ -950,7 +940,6 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) { } void EditorAudioBusDrop::_notification(int p_what) { - switch (p_what) { case NOTIFICATION_DRAW: { draw_style_box(get_theme_stylebox("normal", "Button"), Rect2(Vector2(), get_size())); @@ -962,7 +951,6 @@ void EditorAudioBusDrop::_notification(int p_what) { } } break; case NOTIFICATION_MOUSE_ENTER: { - if (!hovering_drop) { hovering_drop = true; update(); @@ -970,7 +958,6 @@ void EditorAudioBusDrop::_notification(int p_what) { } break; case NOTIFICATION_MOUSE_EXIT: case NOTIFICATION_DRAG_END: { - if (hovering_drop) { hovering_drop = false; update(); @@ -980,29 +967,24 @@ void EditorAudioBusDrop::_notification(int p_what) { } bool EditorAudioBusDrop::can_drop_data(const Point2 &p_point, const Variant &p_data) const { - Dictionary d = p_data; return (d.has("type") && String(d["type"]) == "move_audio_bus"); } void EditorAudioBusDrop::drop_data(const Point2 &p_point, const Variant &p_data) { - Dictionary d = p_data; emit_signal("dropped", d["index"], AudioServer::get_singleton()->get_bus_count()); } void EditorAudioBusDrop::_bind_methods() { - ADD_SIGNAL(MethodInfo("dropped")); } EditorAudioBusDrop::EditorAudioBusDrop() { - hovering_drop = false; } void EditorAudioBuses::_update_buses() { - while (bus_hb->get_child_count() > 0) { memdelete(bus_hb->get_child(0)); } @@ -1010,7 +992,6 @@ void EditorAudioBuses::_update_buses() { drop_end = nullptr; for (int i = 0; i < AudioServer::get_singleton()->get_bus_count(); i++) { - bool is_master = (i == 0); EditorAudioBus *audio_bus = memnew(EditorAudioBus(this, is_master)); bus_hb->add_child(audio_bus); @@ -1023,33 +1004,27 @@ void EditorAudioBuses::_update_buses() { } EditorAudioBuses *EditorAudioBuses::register_editor() { - EditorAudioBuses *audio_buses = memnew(EditorAudioBuses); EditorNode::get_singleton()->add_bottom_panel_item(TTR("Audio"), audio_buses); return audio_buses; } void EditorAudioBuses::_notification(int p_what) { - switch (p_what) { case NOTIFICATION_ENTER_TREE: case NOTIFICATION_THEME_CHANGED: { - bus_scroll->add_theme_style_override("bg", get_theme_stylebox("bg", "Tree")); } break; case NOTIFICATION_READY: { - _update_buses(); } break; case NOTIFICATION_DRAG_END: { - if (drop_end) { drop_end->queue_delete(); drop_end = nullptr; } } break; case NOTIFICATION_PROCESS: { - // Check if anything was edited. bool edited = AudioServer::get_singleton()->is_edited(); for (int i = 0; i < AudioServer::get_singleton()->get_bus_count(); i++) { @@ -1072,7 +1047,6 @@ void EditorAudioBuses::_notification(int p_what) { } void EditorAudioBuses::_add_bus() { - UndoRedo *ur = EditorNode::get_undo_redo(); ur->create_action(TTR("Add Audio Bus")); @@ -1084,22 +1058,20 @@ void EditorAudioBuses::_add_bus() { } void EditorAudioBuses::_update_bus(int p_index) { - - if (p_index >= bus_hb->get_child_count()) + if (p_index >= bus_hb->get_child_count()) { return; + } bus_hb->get_child(p_index)->call("update_bus"); } void EditorAudioBuses::_update_sends() { - for (int i = 0; i < bus_hb->get_child_count(); i++) { bus_hb->get_child(i)->call("update_send"); } } void EditorAudioBuses::_delete_bus(Object *p_which) { - EditorAudioBus *bus = Object::cast_to<EditorAudioBus>(p_which); int index = bus->get_index(); if (index == 0) { @@ -1119,7 +1091,6 @@ void EditorAudioBuses::_delete_bus(Object *p_which) { ur->add_undo_method(AudioServer::get_singleton(), "set_bus_mute", index, AudioServer::get_singleton()->is_bus_mute(index)); ur->add_undo_method(AudioServer::get_singleton(), "set_bus_bypass_effects", index, AudioServer::get_singleton()->is_bus_bypassing_effects(index)); for (int i = 0; i < AudioServer::get_singleton()->get_bus_effect_count(index); i++) { - ur->add_undo_method(AudioServer::get_singleton(), "add_bus_effect", index, AudioServer::get_singleton()->get_bus_effect(index, i)); ur->add_undo_method(AudioServer::get_singleton(), "set_bus_effect_enabled", index, i, AudioServer::get_singleton()->is_bus_effect_enabled(index, i)); } @@ -1129,7 +1100,6 @@ void EditorAudioBuses::_delete_bus(Object *p_which) { } void EditorAudioBuses::_duplicate_bus(int p_which) { - int add_at_pos = p_which + 1; UndoRedo *ur = EditorNode::get_undo_redo(); ur->create_action(TTR("Duplicate Audio Bus")); @@ -1141,7 +1111,6 @@ void EditorAudioBuses::_duplicate_bus(int p_which) { ur->add_do_method(AudioServer::get_singleton(), "set_bus_mute", add_at_pos, AudioServer::get_singleton()->is_bus_mute(p_which)); ur->add_do_method(AudioServer::get_singleton(), "set_bus_bypass_effects", add_at_pos, AudioServer::get_singleton()->is_bus_bypassing_effects(p_which)); for (int i = 0; i < AudioServer::get_singleton()->get_bus_effect_count(p_which); i++) { - ur->add_do_method(AudioServer::get_singleton(), "add_bus_effect", add_at_pos, AudioServer::get_singleton()->get_bus_effect(p_which, i)); ur->add_do_method(AudioServer::get_singleton(), "set_bus_effect_enabled", add_at_pos, i, AudioServer::get_singleton()->is_bus_effect_enabled(p_which, i)); } @@ -1152,7 +1121,6 @@ void EditorAudioBuses::_duplicate_bus(int p_which) { } void EditorAudioBuses::_reset_bus_volume(Object *p_which) { - EditorAudioBus *bus = Object::cast_to<EditorAudioBus>(p_which); int index = bus->get_index(); @@ -1166,7 +1134,6 @@ void EditorAudioBuses::_reset_bus_volume(Object *p_which) { } void EditorAudioBuses::_request_drop_end() { - if (!drop_end && bus_hb->get_child_count()) { drop_end = memnew(EditorAudioBusDrop); @@ -1177,7 +1144,6 @@ void EditorAudioBuses::_request_drop_end() { } void EditorAudioBuses::_drop_at_index(int p_bus, int p_index) { - UndoRedo *ur = EditorNode::get_undo_redo(); ur->create_action(TTR("Move Audio Bus")); @@ -1192,48 +1158,42 @@ void EditorAudioBuses::_drop_at_index(int p_bus, int p_index) { } void EditorAudioBuses::_server_save() { - Ref<AudioBusLayout> state = AudioServer::get_singleton()->generate_bus_layout(); ResourceSaver::save(edited_path, state); } void EditorAudioBuses::_select_layout() { - EditorNode::get_singleton()->get_filesystem_dock()->select_file(edited_path); } void EditorAudioBuses::_save_as_layout() { - file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE); file_dialog->set_title(TTR("Save Audio Bus Layout As...")); file_dialog->set_current_path(edited_path); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); new_layout = false; } void EditorAudioBuses::_new_layout() { - file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE); file_dialog->set_title(TTR("Location for New Layout...")); file_dialog->set_current_path(edited_path); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); new_layout = true; } void EditorAudioBuses::_load_layout() { - file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE); file_dialog->set_title(TTR("Open Audio Bus Layout")); file_dialog->set_current_path(edited_path); - file_dialog->popup_centered_ratio(); + file_dialog->popup_file_dialog(); new_layout = false; } void EditorAudioBuses::_load_default_layout() { + String layout_path = ProjectSettings::get_singleton()->get("audio/buses/default_bus_layout"); - String layout_path = ProjectSettings::get_singleton()->get("audio/default_bus_layout"); - - Ref<AudioBusLayout> state = ResourceLoader::load(layout_path, "", true); + Ref<AudioBusLayout> state = ResourceLoader::load(layout_path, "", ResourceFormatLoader::CACHE_MODE_IGNORE); if (state.is_null()) { EditorNode::get_singleton()->show_warning(vformat(TTR("There is no '%s' file."), layout_path)); return; @@ -1248,9 +1208,8 @@ void EditorAudioBuses::_load_default_layout() { } void EditorAudioBuses::_file_dialog_callback(const String &p_string) { - if (file_dialog->get_file_mode() == EditorFileDialog::FILE_MODE_OPEN_FILE) { - Ref<AudioBusLayout> state = ResourceLoader::load(p_string, "", true); + Ref<AudioBusLayout> state = ResourceLoader::load(p_string, "", ResourceFormatLoader::CACHE_MODE_IGNORE); if (state.is_null()) { EditorNode::get_singleton()->show_warning(TTR("Invalid file, not an audio bus layout.")); return; @@ -1264,7 +1223,6 @@ void EditorAudioBuses::_file_dialog_callback(const String &p_string) { call_deferred("_select_layout"); } else if (file_dialog->get_file_mode() == EditorFileDialog::FILE_MODE_SAVE_FILE) { - if (new_layout) { Ref<AudioBusLayout> empty_state; empty_state.instance(); @@ -1287,7 +1245,6 @@ void EditorAudioBuses::_file_dialog_callback(const String &p_string) { } void EditorAudioBuses::_bind_methods() { - ClassDB::bind_method("_update_buses", &EditorAudioBuses::_update_buses); ClassDB::bind_method("_update_bus", &EditorAudioBuses::_update_bus); ClassDB::bind_method("_update_sends", &EditorAudioBuses::_update_sends); @@ -1295,13 +1252,12 @@ void EditorAudioBuses::_bind_methods() { } EditorAudioBuses::EditorAudioBuses() { - drop_end = nullptr; top_hb = memnew(HBoxContainer); add_child(top_hb); file = memnew(Label); - String layout_path = ProjectSettings::get_singleton()->get("audio/default_bus_layout"); + String layout_path = ProjectSettings::get_singleton()->get("audio/buses/default_bus_layout"); file->set_text(String(TTR("Layout")) + ": " + layout_path.get_file()); file->set_clip_text(true); file->set_h_size_flags(SIZE_EXPAND_FILL); @@ -1357,7 +1313,7 @@ EditorAudioBuses::EditorAudioBuses() { set_v_size_flags(SIZE_EXPAND_FILL); - edited_path = ProjectSettings::get_singleton()->get("audio/default_bus_layout"); + edited_path = ProjectSettings::get_singleton()->get("audio/buses/default_bus_layout"); file_dialog = memnew(EditorFileDialog); List<String> ext; @@ -1372,10 +1328,9 @@ EditorAudioBuses::EditorAudioBuses() { } void EditorAudioBuses::open_layout(const String &p_path) { - EditorNode::get_singleton()->make_bottom_panel_item_visible(this); - Ref<AudioBusLayout> state = ResourceLoader::load(p_path, "", true); + Ref<AudioBusLayout> state = ResourceLoader::load(p_path, "", ResourceFormatLoader::CACHE_MODE_IGNORE); if (state.is_null()) { EditorNode::get_singleton()->show_warning(TTR("Invalid file, not an audio bus layout.")); return; @@ -1390,9 +1345,7 @@ void EditorAudioBuses::open_layout(const String &p_path) { } void AudioBusesEditorPlugin::edit(Object *p_node) { - if (Object::cast_to<AudioBusLayout>(p_node)) { - String path = Object::cast_to<AudioBusLayout>(p_node)->get_path(); if (path.is_resource_file()) { audio_bus_editor->open_layout(path); @@ -1401,7 +1354,6 @@ void AudioBusesEditorPlugin::edit(Object *p_node) { } bool AudioBusesEditorPlugin::handles(Object *p_node) const { - return (Object::cast_to<AudioBusLayout>(p_node) != nullptr); } @@ -1409,7 +1361,6 @@ void AudioBusesEditorPlugin::make_visible(bool p_visible) { } AudioBusesEditorPlugin::AudioBusesEditorPlugin(EditorAudioBuses *p_node) { - audio_bus_editor = p_node; } @@ -1417,21 +1368,20 @@ AudioBusesEditorPlugin::~AudioBusesEditorPlugin() { } void EditorAudioMeterNotches::add_notch(float p_normalized_offset, float p_db_value, bool p_render_value) { - notches.push_back(AudioNotch(p_normalized_offset, p_db_value, p_render_value)); } Size2 EditorAudioMeterNotches::get_minimum_size() const { - Ref<Font> font = get_theme_font("font", "Label"); - float font_height = font->get_height(); + int font_size = get_theme_font_size("font_size", "Label"); + float font_height = font->get_height(font_size); float width = 0; float height = top_padding + btm_padding; for (int i = 0; i < notches.size(); i++) { if (notches[i].render_db_value) { - width = MAX(width, font->get_string_size(String::num(Math::abs(notches[i].db_value)) + "dB").x); + width = MAX(width, font->get_string_size(String::num(Math::abs(notches[i].db_value)) + "dB", font_size).x); height += font_height; } } @@ -1441,13 +1391,11 @@ Size2 EditorAudioMeterNotches::get_minimum_size() const { } void EditorAudioMeterNotches::_bind_methods() { - ClassDB::bind_method("add_notch", &EditorAudioMeterNotches::add_notch); ClassDB::bind_method("_draw_audio_notches", &EditorAudioMeterNotches::_draw_audio_notches); } void EditorAudioMeterNotches::_notification(int p_what) { - switch (p_what) { case NOTIFICATION_THEME_CHANGED: { notch_color = EditorSettings::get_singleton()->is_dark_theme() ? Color(1, 1, 1) : Color(0, 0, 0); @@ -1459,9 +1407,9 @@ void EditorAudioMeterNotches::_notification(int p_what) { } void EditorAudioMeterNotches::_draw_audio_notches() { - Ref<Font> font = get_theme_font("font", "Label"); - float font_height = font->get_height(); + int font_size = get_theme_font_size("font_size", "Label"); + float font_height = font->get_height(font_size); for (int i = 0; i < notches.size(); i++) { AudioNotch n = notches[i]; @@ -1475,16 +1423,12 @@ void EditorAudioMeterNotches::_draw_audio_notches() { Vector2(line_length + label_space, (1.0f - n.relative_position) * (get_size().y - btm_padding - top_padding) + (font_height / 4) + top_padding), String::num(Math::abs(n.db_value)) + "dB", + HALIGN_LEFT, -1, font_size, notch_color); } } } -EditorAudioMeterNotches::EditorAudioMeterNotches() : - line_length(5.0f), - label_space(2.0f), - btm_padding(9.0f), - top_padding(5.0f) { - +EditorAudioMeterNotches::EditorAudioMeterNotches() { notch_color = EditorSettings::get_singleton()->is_dark_theme() ? Color(1, 1, 1) : Color(0, 0, 0); } |