Improved audio buses editor

This commit is contained in:
Daniel J. Ramirez 2017-09-25 01:12:18 -05:00
parent ea7646aabe
commit 0f5f916bf0
2 changed files with 34 additions and 22 deletions

View file

@ -64,6 +64,8 @@ void EditorAudioBus::_notification(int p_what) {
if (has_focus()) {
draw_style_box(get_stylebox("focus", "Button"), Rect2(Vector2(), get_size()));
} else if (is_master) {
draw_style_box(get_stylebox("disabled", "Button"), Rect2(Vector2(), get_size()));
}
}
@ -123,7 +125,7 @@ void EditorAudioBus::_notification(int p_what) {
void EditorAudioBus::update_send() {
send->clear();
if (get_index() == 0) {
if (is_master) {
send->set_disabled(true);
send->set_text(TTR("Speakers"));
} else {
@ -154,7 +156,7 @@ void EditorAudioBus::update_bus() {
slider->set_value(AudioServer::get_singleton()->get_bus_volume_db(index));
track_name->set_text(AudioServer::get_singleton()->get_bus_name(index));
if (get_index() == 0)
if (is_master)
track_name->set_editable(false);
solo->set_pressed(AudioServer::get_singleton()->is_bus_solo(index));
@ -237,6 +239,8 @@ void EditorAudioBus::_name_changed(const String &p_new_name) {
ur->commit_action();
updating_bus = false;
track_name->release_focus();
}
void EditorAudioBus::_volume_db_changed(float p_db) {
@ -619,10 +623,11 @@ void EditorAudioBus::_bind_methods() {
ADD_SIGNAL(MethodInfo("dropped"));
}
EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses) {
EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) {
buses = p_buses;
updating_bus = false;
is_master = p_is_master;
set_tooltip(TTR("Audio Bus, Drag and Drop to rearrange."));
@ -630,24 +635,15 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses) {
add_child(vb);
set_v_size_flags(SIZE_EXPAND_FILL);
set_custom_minimum_size(Size2(100, 0) * EDSCALE);
HBoxContainer *head = memnew(HBoxContainer);
track_name = memnew(LineEdit);
head->add_child(track_name);
track_name->connect("text_entered", this, "_name_changed");
track_name->connect("focus_exited", this, "_name_focus_exit");
track_name->set_h_size_flags(SIZE_EXPAND_FILL);
bus_options = memnew(MenuButton);
bus_options->set_h_size_flags(SIZE_SHRINK_END);
bus_options->set_tooltip(TTR("Bus options"));
head->add_child(bus_options);
vb->add_child(head);
vb->add_child(track_name);
HBoxContainer *hbc = memnew(HBoxContainer);
vb->add_child(hbc);
hbc->add_spacer();
solo = memnew(ToolButton);
solo->set_toggle_mode(true);
solo->set_tooltip(TTR("Solo"));
@ -668,6 +664,23 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses) {
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));
child->add_style_override("normal", sbempty);
child->add_style_override("hover", sbempty);
child->add_style_override("focus", sbempty);
child->add_style_override("pressed", sbempty);
}
vb->add_child(memnew(HSeparator));
HBoxContainer *hb = memnew(HBoxContainer);
vb->add_child(hb);
slider = memnew(VSlider);
@ -699,8 +712,6 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses) {
scale = memnew(TextureRect);
hb->add_child(scale);
//add_child(hb);
effects = memnew(Tree);
effects->set_hide_root(true);
effects->set_custom_minimum_size(Size2(0, 100) * EDSCALE);
@ -744,6 +755,7 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses) {
bus_popup = bus_options->get_popup();
bus_popup->add_item(TTR("Duplicate"));
if (!is_master)
bus_popup->add_item(TTR("Delete"));
bus_popup->add_item(TTR("Reset Volume"));
bus_popup->connect("index_pressed", this, "_bus_popup_pressed");
@ -787,10 +799,8 @@ void EditorAudioBuses::_update_buses() {
for (int i = 0; i < AudioServer::get_singleton()->get_bus_count(); i++) {
EditorAudioBus *audio_bus = memnew(EditorAudioBus(this));
if (i == 0) {
audio_bus->set_self_modulate(Color(1, 0.9, 0.9));
}
bool is_master = i == 0 ? true : false;
EditorAudioBus *audio_bus = memnew(EditorAudioBus(this, is_master));
bus_hb->add_child(audio_bus);
audio_bus->connect("delete_request", this, "_delete_bus", varray(audio_bus), CONNECT_DEFERRED);
audio_bus->connect("duplicate_request", this, "_duplicate_bus", varray(), CONNECT_DEFERRED);

View file

@ -84,6 +84,8 @@ class EditorAudioBus : public PanelContainer {
bool updating_bus;
bool is_master;
void _gui_input(const Ref<InputEvent> &p_event);
void _bus_popup_pressed(int p_option);
@ -120,7 +122,7 @@ public:
void update_bus();
void update_send();
EditorAudioBus(EditorAudioBuses *p_buses = NULL);
EditorAudioBus(EditorAudioBuses *p_buses = NULL, bool p_is_master = false);
};
class EditorAudioBusDrop : public Panel {