Compare commits

..

1 Commits

Author SHA1 Message Date
Serhii Snitsaruk 160d984711
Merge 2973590533 into 4d0d2c0507 2024-07-05 17:50:25 +00:00
1 changed files with 18 additions and 42 deletions

View File

@ -221,8 +221,6 @@ void LimboAIEditor::_load_bt(String p_path) {
void LimboAIEditor::_disable_editing() { void LimboAIEditor::_disable_editing() {
task_tree->unload(); task_tree->unload();
task_palette->hide(); task_palette->hide();
task_tree->hide();
usage_hint->show();
} }
void LimboAIEditor::edit_bt(Ref<BehaviorTree> p_behavior_tree, bool p_force_refresh) { void LimboAIEditor::edit_bt(Ref<BehaviorTree> p_behavior_tree, bool p_force_refresh) {
@ -237,9 +235,14 @@ void LimboAIEditor::edit_bt(Ref<BehaviorTree> p_behavior_tree, bool p_force_refr
p_behavior_tree->notify_property_list_changed(); p_behavior_tree->notify_property_list_changed();
#endif // LIMBOAI_MODULE #endif // LIMBOAI_MODULE
if (task_tree->get_bt().is_valid() &&
task_tree->get_bt()->is_connected(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty).bind(true))) {
task_tree->get_bt()->disconnect(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty).bind(true));
}
task_tree->load_bt(p_behavior_tree); task_tree->load_bt(p_behavior_tree);
if (task_tree->get_bt().is_valid() && !task_tree->get_bt()->is_connected(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty))) { if (task_tree->get_bt().is_valid()) {
task_tree->get_bt()->connect(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty).bind(true)); task_tree->get_bt()->connect(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty).bind(true));
} }
@ -956,10 +959,6 @@ void LimboAIEditor::_tab_clicked(int p_tab) {
void LimboAIEditor::_tab_closed(int p_tab) { void LimboAIEditor::_tab_closed(int p_tab) {
ERR_FAIL_INDEX(p_tab, history.size()); ERR_FAIL_INDEX(p_tab, history.size());
Ref<BehaviorTree> history_bt = history[p_tab];
if (history_bt.is_valid() && history_bt->is_connected(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty))) {
history_bt->disconnect(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty));
}
history.remove_at(p_tab); history.remove_at(p_tab);
idx_history = MIN(idx_history, history.size() - 1); idx_history = MIN(idx_history, history.size() - 1);
if (idx_history < 0) { if (idx_history < 0) {
@ -1303,11 +1302,9 @@ void LimboAIEditor::_notification(int p_what) {
cf->set_value("bt_editor", "bteditor_hsplit", split_offset); cf->set_value("bt_editor", "bteditor_hsplit", split_offset);
cf->save(conf_path); cf->save(conf_path);
task_tree->unload(); if (task_tree->get_bt().is_valid() &&
for (int i = 0; i < history.size(); i++) { task_tree->get_bt()->is_connected(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty).bind(true))) {
if (history[i]->is_connected(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty))) { task_tree->get_bt()->disconnect(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty).bind(true));
history[i]->disconnect(LW_NAME(changed), callable_mp(this, &LimboAIEditor::_mark_as_dirty));
}
} }
} break; } break;
case NOTIFICATION_READY: { case NOTIFICATION_READY: {
@ -1498,14 +1495,14 @@ LimboAIEditor::LimboAIEditor() {
misc_btn->set_flat(true); misc_btn->set_flat(true);
toolbar->add_child(misc_btn); toolbar->add_child(misc_btn);
HBoxContainer *version_hbox = memnew(HBoxContainer); HBoxContainer *toolbar_end_hbox = memnew(HBoxContainer);
version_hbox->set_h_size_flags(SIZE_EXPAND | SIZE_SHRINK_END); toolbar_end_hbox->set_h_size_flags(SIZE_EXPAND | SIZE_SHRINK_END);
toolbar->add_child(version_hbox); toolbar->add_child(toolbar_end_hbox);
TextureRect *logo = memnew(TextureRect); TextureRect *logo = memnew(TextureRect);
logo->set_stretch_mode(TextureRect::STRETCH_KEEP_ASPECT_CENTERED); logo->set_stretch_mode(TextureRect::STRETCH_KEEP_ASPECT_CENTERED);
logo->set_texture(LimboUtility::get_singleton()->get_task_icon("LimboAI")); logo->set_texture(LimboUtility::get_singleton()->get_task_icon("LimboAI"));
version_hbox->add_child(logo); toolbar_end_hbox->add_child(logo);
version_btn = memnew(LinkButton); version_btn = memnew(LinkButton);
version_btn->set_text(TTR("v") + String(GET_LIMBOAI_FULL_VERSION())); version_btn->set_text(TTR("v") + String(GET_LIMBOAI_FULL_VERSION()));
@ -1513,11 +1510,11 @@ LimboAIEditor::LimboAIEditor() {
version_btn->set_self_modulate(Color(1, 1, 1, 0.65)); version_btn->set_self_modulate(Color(1, 1, 1, 0.65));
version_btn->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER); version_btn->set_underline_mode(LinkButton::UNDERLINE_MODE_ON_HOVER);
version_btn->set_v_size_flags(SIZE_SHRINK_CENTER); version_btn->set_v_size_flags(SIZE_SHRINK_CENTER);
version_hbox->add_child(version_btn); toolbar_end_hbox->add_child(version_btn);
Control *version_spacer = memnew(Control); Control *version_spacer = memnew(Control);
version_spacer->set_custom_minimum_size(Size2(2, 0) * EDSCALE); version_spacer->set_custom_minimum_size(Size2(2, 0) * EDSCALE);
version_hbox->add_child(version_spacer); toolbar_end_hbox->add_child(version_spacer);
tab_bar_panel = memnew(PanelContainer); tab_bar_panel = memnew(PanelContainer);
vbox->add_child(tab_bar_panel); vbox->add_child(tab_bar_panel);
@ -1568,40 +1565,19 @@ LimboAIEditor::LimboAIEditor() {
task_palette = memnew(TaskPalette()); task_palette = memnew(TaskPalette());
task_palette->hide(); task_palette->hide();
hsc->add_child(task_palette); hsc->add_child(task_palette);
editor_layout = (EditorLayout)(int)EDITOR_GET("limbo_ai/editor/layout"); editor_layout = (EditorLayout)(int)EDITOR_GET("limbo_ai/editor/layout");
if (editor_layout == EditorLayout::WIDESCREEN_OPTIMIZED) { if (editor_layout == EditorLayout::WIDESCREEN_OPTIMIZED) {
// * Alternative layout optimized for wide screen.
VBoxContainer *sidebar_vbox = memnew(VBoxContainer);
hsc->add_child(sidebar_vbox);
sidebar_vbox->set_v_size_flags(SIZE_EXPAND_FILL);
HBoxContainer *header_bar = memnew(HBoxContainer);
sidebar_vbox->add_child(header_bar);
Control *header_spacer = memnew(Control);
header_bar->add_child(header_spacer);
header_spacer->set_custom_minimum_size(Size2(6, 0) * EDSCALE);
TextureRect *header_logo = Object::cast_to<TextureRect>(logo->duplicate());
header_bar->add_child(header_logo);
Label *header_title = memnew(Label);
header_bar->add_child(header_title);
header_title->set_text(TTR("Behavior Tree Editor"));
header_title->set_v_size_flags(SIZE_SHRINK_CENTER);
header_title->set_theme_type_variation("HeaderMedium");
task_palette->reparent(sidebar_vbox);
task_palette->set_v_size_flags(SIZE_EXPAND_FILL);
VBoxContainer *editor_vbox = memnew(VBoxContainer); VBoxContainer *editor_vbox = memnew(VBoxContainer);
hsc->add_child(editor_vbox); hsc->add_child(editor_vbox);
toolbar->reparent(editor_vbox); toolbar->reparent(editor_vbox);
tab_bar_panel->reparent(editor_vbox); tab_bar_panel->reparent(editor_vbox);
task_tree->reparent(editor_vbox); task_tree->reparent(editor_vbox);
usage_hint->reparent(editor_vbox); usage_hint->reparent(editor_vbox);
hsc->set_split_offset(300);
} else {
hsc->set_split_offset(-300);
} }
hsc->set_split_offset((editor_layout == EditorLayout::CLASSIC ? -320 : 320) * EDSCALE);
change_type_popup = memnew(PopupPanel); change_type_popup = memnew(PopupPanel);
add_child(change_type_popup); add_child(change_type_popup);
{ {