diff options
author | kobewi <kobewi4e@gmail.com> | 2024-05-01 00:26:42 +0200 |
---|---|---|
committer | kobewi <kobewi4e@gmail.com> | 2024-05-01 00:26:42 +0200 |
commit | 09043785158ac65e76bcedc1406b858b93855476 (patch) | |
tree | bcf66391e5edff3b9fcd523edf4eecd4656d78f8 /editor/editor_file_system.cpp | |
parent | d282e4f0e6b6ebcf3bd6e05cd62f2a8fe1f9a238 (diff) | |
download | redot-engine-09043785158ac65e76bcedc1406b858b93855476.tar.gz |
Remove code duplication for adding global script class
Diffstat (limited to 'editor/editor_file_system.cpp')
-rw-r--r-- | editor/editor_file_system.cpp | 54 |
1 files changed, 29 insertions, 25 deletions
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp index 14190a43a5..b6f44fb72c 100644 --- a/editor/editor_file_system.cpp +++ b/editor/editor_file_system.cpp @@ -1578,31 +1578,7 @@ void EditorFileSystem::_update_script_classes() { update_script_mutex.lock(); for (const String &path : update_script_paths) { - ScriptServer::remove_global_class_by_path(path); // First remove, just in case it changed - - int index = -1; - EditorFileSystemDirectory *efd = find_file(path, &index); - - if (!efd || index < 0) { - // The file was removed - continue; - } - - if (!efd->files[index]->script_class_name.is_empty()) { - String lang; - for (int j = 0; j < ScriptServer::get_language_count(); j++) { - if (ScriptServer::get_language(j)->handles_global_class_type(efd->files[index]->type)) { - lang = ScriptServer::get_language(j)->get_name(); - } - } - if (lang.is_empty()) { - continue; // No lang found that can handle this global class - } - - ScriptServer::add_global_class(efd->files[index]->script_class_name, efd->files[index]->script_class_extends, lang, path); - EditorNode::get_editor_data().script_class_set_icon_path(efd->files[index]->script_class_name, efd->files[index]->script_class_icon_path); - EditorNode::get_editor_data().script_class_set_name(path, efd->files[index]->script_class_name); - } + EditorFileSystem::get_singleton()->register_global_class_script(path, path); } // Parse documentation second, as it requires the class names to be correct and registered @@ -1844,6 +1820,34 @@ HashSet<String> EditorFileSystem::get_valid_extensions() const { return valid_extensions; } +void EditorFileSystem::register_global_class_script(const String &p_search_path, const String &p_target_path) { + ScriptServer::remove_global_class_by_path(p_search_path); // First remove, just in case it changed + + int index = -1; + EditorFileSystemDirectory *efd = find_file(p_search_path, &index); + + if (!efd || index < 0) { + // The file was removed + return; + } + + if (!efd->files[index]->script_class_name.is_empty()) { + String lang; + for (int j = 0; j < ScriptServer::get_language_count(); j++) { + if (ScriptServer::get_language(j)->handles_global_class_type(efd->files[index]->type)) { + lang = ScriptServer::get_language(j)->get_name(); + } + } + if (lang.is_empty()) { + return; // No lang found that can handle this global class + } + + ScriptServer::add_global_class(efd->files[index]->script_class_name, efd->files[index]->script_class_extends, lang, p_target_path); + EditorNode::get_editor_data().script_class_set_icon_path(efd->files[index]->script_class_name, efd->files[index]->script_class_icon_path); + EditorNode::get_editor_data().script_class_set_name(p_target_path, efd->files[index]->script_class_name); + } +} + Error EditorFileSystem::_reimport_group(const String &p_group_file, const Vector<String> &p_files) { String importer_name; |