summaryrefslogtreecommitdiffstats
path: root/editor
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-06-11 11:51:09 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-06-11 11:51:09 +0200
commit928e044ef535304e70edd522cfcbfd5b7ec476f2 (patch)
treea28dc2f82572aa96ed2b3e2c691c982eb83a12a6 /editor
parent4629845eadc066f793b1125960d095f81f5b14c3 (diff)
parent9f8a918ade454c986e331076687f400009e724b7 (diff)
downloadredot-engine-928e044ef535304e70edd522cfcbfd5b7ec476f2.tar.gz
Merge pull request #93006 from Hilderin/fix-update-files-pr-#92893
Fix EditorFileSystem `update_files` after #92893
Diffstat (limited to 'editor')
-rw-r--r--editor/editor_file_system.cpp115
1 files changed, 55 insertions, 60 deletions
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index 37e00bf042..cdad1f0fab 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -1725,7 +1725,7 @@ void EditorFileSystem::update_files(const Vector<String> &p_script_paths) {
if (!_find_file(file, &fs, cpos)) {
if (!fs) {
- return;
+ continue;
}
}
@@ -1748,77 +1748,72 @@ void EditorFileSystem::update_files(const Vector<String> &p_script_paths) {
memdelete(fs->files[cpos]);
fs->files.remove_at(cpos);
}
+ } else {
+ String type = ResourceLoader::get_resource_type(file);
+ if (type.is_empty() && textfile_extensions.has(file.get_extension())) {
+ type = "TextFile";
+ }
+ String script_class = ResourceLoader::get_resource_script_class(file);
- _update_pending_script_classes();
- _update_pending_scene_groups();
- call_deferred(SNAME("emit_signal"), "filesystem_changed"); //update later
- return;
- }
-
- String type = ResourceLoader::get_resource_type(file);
- if (type.is_empty() && textfile_extensions.has(file.get_extension())) {
- type = "TextFile";
- }
- String script_class = ResourceLoader::get_resource_script_class(file);
-
- ResourceUID::ID uid = ResourceLoader::get_resource_uid(file);
+ ResourceUID::ID uid = ResourceLoader::get_resource_uid(file);
- if (cpos == -1) {
- // The file did not exist, it was added.
- int idx = 0;
- String file_name = file.get_file();
+ if (cpos == -1) {
+ // The file did not exist, it was added.
+ int idx = 0;
+ String file_name = file.get_file();
- for (int i = 0; i < fs->files.size(); i++) {
- if (file.filenocasecmp_to(fs->files[i]->file) < 0) {
- break;
+ for (int i = 0; i < fs->files.size(); i++) {
+ if (file.filenocasecmp_to(fs->files[i]->file) < 0) {
+ break;
+ }
+ idx++;
}
- idx++;
- }
- EditorFileSystemDirectory::FileInfo *fi = memnew(EditorFileSystemDirectory::FileInfo);
- fi->file = file_name;
- fi->import_modified_time = 0;
- fi->import_valid = type == "TextFile" ? true : ResourceLoader::is_import_valid(file);
+ EditorFileSystemDirectory::FileInfo *fi = memnew(EditorFileSystemDirectory::FileInfo);
+ fi->file = file_name;
+ fi->import_modified_time = 0;
+ fi->import_valid = type == "TextFile" ? true : ResourceLoader::is_import_valid(file);
- if (idx == fs->files.size()) {
- fs->files.push_back(fi);
+ if (idx == fs->files.size()) {
+ fs->files.push_back(fi);
+ } else {
+ fs->files.insert(idx, fi);
+ }
+ cpos = idx;
} else {
- fs->files.insert(idx, fi);
+ //the file exists and it was updated, and was not added in this step.
+ //this means we must force upon next restart to scan it again, to get proper type and dependencies
+ late_update_files.insert(file);
+ _save_late_updated_files(); //files need to be updated in the re-scan
}
- cpos = idx;
- } else {
- //the file exists and it was updated, and was not added in this step.
- //this means we must force upon next restart to scan it again, to get proper type and dependencies
- late_update_files.insert(file);
- _save_late_updated_files(); //files need to be updated in the re-scan
- }
- fs->files[cpos]->type = type;
- fs->files[cpos]->resource_script_class = script_class;
- fs->files[cpos]->uid = uid;
- fs->files[cpos]->script_class_name = _get_global_script_class(type, file, &fs->files[cpos]->script_class_extends, &fs->files[cpos]->script_class_icon_path);
- fs->files[cpos]->import_group_file = ResourceLoader::get_import_group_file(file);
- fs->files[cpos]->modified_time = FileAccess::get_modified_time(file);
- fs->files[cpos]->deps = _get_dependencies(file);
- fs->files[cpos]->import_valid = type == "TextFile" ? true : ResourceLoader::is_import_valid(file);
+ fs->files[cpos]->type = type;
+ fs->files[cpos]->resource_script_class = script_class;
+ fs->files[cpos]->uid = uid;
+ fs->files[cpos]->script_class_name = _get_global_script_class(type, file, &fs->files[cpos]->script_class_extends, &fs->files[cpos]->script_class_icon_path);
+ fs->files[cpos]->import_group_file = ResourceLoader::get_import_group_file(file);
+ fs->files[cpos]->modified_time = FileAccess::get_modified_time(file);
+ fs->files[cpos]->deps = _get_dependencies(file);
+ fs->files[cpos]->import_valid = type == "TextFile" ? true : ResourceLoader::is_import_valid(file);
+
+ if (uid != ResourceUID::INVALID_ID) {
+ if (ResourceUID::get_singleton()->has_id(uid)) {
+ ResourceUID::get_singleton()->set_id(uid, file);
+ } else {
+ ResourceUID::get_singleton()->add_id(uid, file);
+ }
- if (uid != ResourceUID::INVALID_ID) {
- if (ResourceUID::get_singleton()->has_id(uid)) {
- ResourceUID::get_singleton()->set_id(uid, file);
- } else {
- ResourceUID::get_singleton()->add_id(uid, file);
+ ResourceUID::get_singleton()->update_cache();
}
+ // Update preview
+ EditorResourcePreview::get_singleton()->check_for_invalidation(file);
- ResourceUID::get_singleton()->update_cache();
- }
- // Update preview
- EditorResourcePreview::get_singleton()->check_for_invalidation(file);
-
- if (ClassDB::is_parent_class(fs->files[cpos]->type, SNAME("Script"))) {
- _queue_update_script_class(file);
- }
- if (fs->files[cpos]->type == SNAME("PackedScene")) {
- _queue_update_scene_groups(file);
+ if (ClassDB::is_parent_class(fs->files[cpos]->type, SNAME("Script"))) {
+ _queue_update_script_class(file);
+ }
+ if (fs->files[cpos]->type == SNAME("PackedScene")) {
+ _queue_update_scene_groups(file);
+ }
}
}