summaryrefslogtreecommitdiffstats
path: root/editor/editor_file_system.cpp
diff options
context:
space:
mode:
authorkobewi <kobewi4e@gmail.com>2024-05-01 00:26:42 +0200
committerkobewi <kobewi4e@gmail.com>2024-05-01 00:26:42 +0200
commit09043785158ac65e76bcedc1406b858b93855476 (patch)
treebcf66391e5edff3b9fcd523edf4eecd4656d78f8 /editor/editor_file_system.cpp
parentd282e4f0e6b6ebcf3bd6e05cd62f2a8fe1f9a238 (diff)
downloadredot-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.cpp54
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;