feat: updated engine

This commit is contained in:
Sara Gerretsen 2026-07-10 17:04:34 +02:00
parent cbe99774ff
commit f4cf6b3999
6607 changed files with 910135 additions and 430025 deletions

View file

@ -30,6 +30,7 @@
#include "editor_dir_dialog.h"
#include "core/object/callable_mp.h"
#include "editor/docks/filesystem_dock.h"
#include "editor/file_system/editor_file_system.h"
#include "editor/gui/directory_create_dialog.h"
@ -97,6 +98,7 @@ void EditorDirDialog::config(const Vector<String> &p_paths) {
// TRANSLATORS: %d is the number of files that will be moved or duplicated.
set_title(vformat(TTRN("Move/Duplicate %d Item", "Move/Duplicate %d Items", p_paths.size()), p_paths.size()));
}
base_directory_path = p_paths[0].get_base_dir();
}
void EditorDirDialog::reload(const String &p_path) {
@ -127,8 +129,39 @@ void EditorDirDialog::_notification(int p_what) {
} break;
case NOTIFICATION_VISIBILITY_CHANGED: {
if (must_reload && is_visible()) {
reload();
if (is_visible()) {
if (must_reload) {
reload();
}
tree->deselect_all();
const PackedStringArray parts = base_directory_path.trim_prefix("res://").split("/", false);
if (parts.is_empty()) {
break;
}
int i = 0;
TreeItem *item = tree->get_root();
while (i < parts.size()) {
const String &folder = parts[i];
for (TreeItem *child = item->get_first_child(); child; child = child->get_next()) {
if (child->get_text(0) == folder) {
i++;
if (i == parts.size()) {
TreeItem *parent_item = child->get_parent();
while (parent_item) {
parent_item->set_collapsed(false);
parent_item = parent_item->get_parent();
}
child->select(0);
tree->ensure_cursor_is_visible();
} else {
item = child;
}
break;
}
}
}
}
} break;
}
@ -176,7 +209,7 @@ void EditorDirDialog::_make_dir() {
TreeItem *ti = tree->get_selected();
ERR_FAIL_NULL(ti);
const String &directory = ti->get_metadata(0);
makedialog->config(directory, callable_mp(this, &EditorDirDialog::_make_dir_confirm).bind(directory), DirectoryCreateDialog::MODE_DIRECTORY, "new folder");
makedialog->config(directory, callable_mp(this, &EditorDirDialog::_make_dir_confirm).bind(directory), DirectoryCreateDialog::MODE_DIRECTORY, TTR("Create Folder"), "new folder");
makedialog->popup_centered();
}