浏览代码

Create .uid files in EditorFileSystem

kobewi 7 月之前
父节点
当前提交
8aa3ee6a35
共有 5 个文件被更改,包括 29 次插入36 次删除
  1. 29 17
      editor/editor_file_system.cpp
  2. 0 15
      editor/editor_node.cpp
  3. 0 1
      editor/editor_node.h
  4. 0 1
      editor/script_create_dialog.cpp
  5. 0 2
      editor/shader_create_dialog.cpp

+ 29 - 17
editor/editor_file_system.cpp

@@ -2348,16 +2348,17 @@ void EditorFileSystem::update_files(const Vector<String> &p_script_paths) {
 				_save_late_updated_files(); //files need to be updated in the re-scan
 				_save_late_updated_files(); //files need to be updated in the re-scan
 			}
 			}
 
 
-			const String old_script_class_icon_path = fs->files[cpos]->script_class_icon_path;
-			const String old_class_name = fs->files[cpos]->script_class_name;
-			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" || type == "OtherFile") ? true : ResourceLoader::is_import_valid(file);
+			EditorFileSystemDirectory::FileInfo *fi = fs->files[cpos];
+			const String old_script_class_icon_path = fi->script_class_icon_path;
+			const String old_class_name = fi->script_class_name;
+			fi->type = type;
+			fi->resource_script_class = script_class;
+			fi->uid = uid;
+			fi->script_class_name = _get_global_script_class(type, file, &fi->script_class_extends, &fi->script_class_icon_path);
+			fi->import_group_file = ResourceLoader::get_import_group_file(file);
+			fi->modified_time = FileAccess::get_modified_time(file);
+			fi->deps = _get_dependencies(file);
+			fi->import_valid = type == "TextFile" || type == "OtherFile" || ResourceLoader::is_import_valid(file);
 
 
 			if (uid != ResourceUID::INVALID_ID) {
 			if (uid != ResourceUID::INVALID_ID) {
 				if (ResourceUID::get_singleton()->has_id(uid)) {
 				if (ResourceUID::get_singleton()->has_id(uid)) {
@@ -2367,25 +2368,36 @@ void EditorFileSystem::update_files(const Vector<String> &p_script_paths) {
 				}
 				}
 
 
 				ResourceUID::get_singleton()->update_cache();
 				ResourceUID::get_singleton()->update_cache();
+			} else {
+				if (ResourceLoader::exists(file) && !ResourceLoader::has_custom_uid_support(file) && !FileAccess::exists(file + ".uid")) {
+					Ref<FileAccess> f = FileAccess::open(file + ".uid", FileAccess::WRITE);
+					if (f.is_valid()) {
+						const ResourceUID::ID id = ResourceUID::get_singleton()->create_id();
+						ResourceUID::get_singleton()->add_id(id, file);
+						f->store_line(ResourceUID::get_singleton()->id_to_text(id));
+						fi->uid = id;
+					}
+				}
 			}
 			}
+
 			// Update preview
 			// Update preview
 			EditorResourcePreview::get_singleton()->check_for_invalidation(file);
 			EditorResourcePreview::get_singleton()->check_for_invalidation(file);
 
 
-			if (ClassDB::is_parent_class(fs->files[cpos]->type, SNAME("Script"))) {
-				_queue_update_script_class(file, fs->files[cpos]->type, fs->files[cpos]->script_class_name, fs->files[cpos]->script_class_extends, fs->files[cpos]->script_class_icon_path);
+			if (ClassDB::is_parent_class(fi->type, SNAME("Script"))) {
+				_queue_update_script_class(file, fi->type, fi->script_class_name, fi->script_class_extends, fi->script_class_icon_path);
 			}
 			}
-			if (fs->files[cpos]->type == SNAME("PackedScene")) {
+			if (fi->type == SNAME("PackedScene")) {
 				_queue_update_scene_groups(file);
 				_queue_update_scene_groups(file);
 			}
 			}
 
 
-			if (ClassDB::is_parent_class(fs->files[cpos]->type, SNAME("Resource"))) {
-				files_to_update_icon_path.push_back(fs->files[cpos]);
-			} else if (old_script_class_icon_path != fs->files[cpos]->script_class_icon_path) {
+			if (ClassDB::is_parent_class(fi->type, SNAME("Resource"))) {
+				files_to_update_icon_path.push_back(fi);
+			} else if (old_script_class_icon_path != fi->script_class_icon_path) {
 				update_files_icon_cache = true;
 				update_files_icon_cache = true;
 			}
 			}
 
 
 			// Restore another script as the global class name if multiple scripts had the same old class name.
 			// Restore another script as the global class name if multiple scripts had the same old class name.
-			if (!old_class_name.is_empty() && fs->files[cpos]->script_class_name != old_class_name && ClassDB::is_parent_class(type, SNAME("Script"))) {
+			if (!old_class_name.is_empty() && fi->script_class_name != old_class_name && ClassDB::is_parent_class(type, SNAME("Script"))) {
 				EditorFileSystemDirectory::FileInfo *old_fi = nullptr;
 				EditorFileSystemDirectory::FileInfo *old_fi = nullptr;
 				String old_file = _get_file_by_class_name(filesystem, old_class_name, old_fi);
 				String old_file = _get_file_by_class_name(filesystem, old_class_name, old_fi);
 				if (!old_file.is_empty() && old_fi) {
 				if (!old_file.is_empty() && old_fi) {

+ 0 - 15
editor/editor_node.cpp

@@ -1482,16 +1482,6 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String
 	file->popup_file_dialog();
 	file->popup_file_dialog();
 }
 }
 
 
-void EditorNode::ensure_uid_file(const String &p_new_resource_path) {
-	if (ResourceLoader::exists(p_new_resource_path) && !ResourceLoader::has_custom_uid_support(p_new_resource_path) && !FileAccess::exists(p_new_resource_path + ".uid")) {
-		Ref<FileAccess> f = FileAccess::open(p_new_resource_path + ".uid", FileAccess::WRITE);
-		if (f.is_valid()) {
-			const ResourceUID::ID id = ResourceUID::get_singleton()->create_id();
-			f->store_line(ResourceUID::get_singleton()->id_to_text(id));
-		}
-	}
-}
-
 void EditorNode::_menu_option(int p_option) {
 void EditorNode::_menu_option(int p_option) {
 	_menu_option_confirm(p_option, false);
 	_menu_option_confirm(p_option, false);
 }
 }
@@ -2233,11 +2223,6 @@ void EditorNode::_dialog_action(String p_file) {
 			ERR_FAIL_COND(saving_resource.is_null());
 			ERR_FAIL_COND(saving_resource.is_null());
 			save_resource_in_path(saving_resource, p_file);
 			save_resource_in_path(saving_resource, p_file);
 
 
-			if (current_menu_option == RESOURCE_SAVE_AS) {
-				// Create .uid file when making new Resource.
-				ensure_uid_file(p_file);
-			}
-
 			saving_resource = Ref<Resource>();
 			saving_resource = Ref<Resource>();
 			ObjectID current_id = editor_history.get_current();
 			ObjectID current_id = editor_history.get_current();
 			Object *current_obj = current_id.is_valid() ? ObjectDB::get_instance(current_id) : nullptr;
 			Object *current_obj = current_id.is_valid() ? ObjectDB::get_instance(current_id) : nullptr;

+ 0 - 1
editor/editor_node.h

@@ -746,7 +746,6 @@ public:
 	void save_resource_in_path(const Ref<Resource> &p_resource, const String &p_path);
 	void save_resource_in_path(const Ref<Resource> &p_resource, const String &p_path);
 	void save_resource(const Ref<Resource> &p_resource);
 	void save_resource(const Ref<Resource> &p_resource);
 	void save_resource_as(const Ref<Resource> &p_resource, const String &p_at_path = String());
 	void save_resource_as(const Ref<Resource> &p_resource, const String &p_at_path = String());
-	void ensure_uid_file(const String &p_new_resource_path);
 
 
 	void show_about() { _menu_option_confirm(HELP_ABOUT, false); }
 	void show_about() { _menu_option_confirm(HELP_ABOUT, false); }
 
 

+ 0 - 1
editor/script_create_dialog.cpp

@@ -374,7 +374,6 @@ void ScriptCreateDialog::_create_new() {
 			alert->popup_centered();
 			alert->popup_centered();
 			return;
 			return;
 		}
 		}
-		EditorNode::get_singleton()->ensure_uid_file(lpath);
 	}
 	}
 
 
 	emit_signal(SNAME("script_created"), scr);
 	emit_signal(SNAME("script_created"), scr);

+ 0 - 2
editor/shader_create_dialog.cpp

@@ -241,7 +241,6 @@ void fog() {
 			alert->popup_centered();
 			alert->popup_centered();
 			return;
 			return;
 		}
 		}
-		EditorNode::get_singleton()->ensure_uid_file(lpath);
 
 
 		emit_signal(SNAME("shader_include_created"), shader_inc);
 		emit_signal(SNAME("shader_include_created"), shader_inc);
 	} else {
 	} else {
@@ -260,7 +259,6 @@ void fog() {
 				alert->popup_centered();
 				alert->popup_centered();
 				return;
 				return;
 			}
 			}
-			EditorNode::get_singleton()->ensure_uid_file(lpath);
 		}
 		}
 
 
 		emit_signal(SNAME("shader_created"), shader);
 		emit_signal(SNAME("shader_created"), shader);