diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index 983a19470ad0..cd17e29c0356 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -4144,8 +4144,8 @@ void GDScriptAnalyzer::reduce_preload(GDScriptParser::PreloadNode *p_preload) { } else { // TODO: Don't load if validating: use completion cache. - // Must load GDScript and PackedScenes separately to permit cyclic references - // as ResourceLoader::load() detect and reject those. + // Must load GDScript separately to permit cyclic references + // as ResourceLoader::load() detects and rejects those. if (ResourceLoader::get_resource_type(p_preload->resolved_path) == "GDScript") { Error err = OK; Ref res = GDScriptCache::get_shallow_script(p_preload->resolved_path, err, parser->script_path); @@ -4153,13 +4153,6 @@ void GDScriptAnalyzer::reduce_preload(GDScriptParser::PreloadNode *p_preload) { if (err != OK) { push_error(vformat(R"(Could not preload resource script "%s".)", p_preload->resolved_path), p_preload->path); } - } else if (ResourceLoader::get_resource_type(p_preload->resolved_path) == "PackedScene") { - Error err = OK; - Ref res = GDScriptCache::get_packed_scene(p_preload->resolved_path, err, parser->script_path); - p_preload->resource = res; - if (err != OK) { - push_error(vformat(R"(Could not preload resource scene "%s".)", p_preload->resolved_path), p_preload->path); - } } else { p_preload->resource = ResourceLoader::load(p_preload->resolved_path); if (p_preload->resource.is_null()) { diff --git a/modules/gdscript/gdscript_cache.cpp b/modules/gdscript/gdscript_cache.cpp index 76f4e69ab9fc..51dfd4f8d609 100644 --- a/modules/gdscript/gdscript_cache.cpp +++ b/modules/gdscript/gdscript_cache.cpp @@ -37,7 +37,6 @@ #include "core/io/file_access.h" #include "core/templates/vector.h" -#include "scene/resources/packed_scene.h" bool GDScriptParserRef::is_valid() const { return parser != nullptr; @@ -139,13 +138,6 @@ void GDScriptCache::move_script(const String &p_from, const String &p_to) { return; } - for (KeyValue> &E : singleton->packed_scene_dependencies) { - if (E.value.has(p_from)) { - E.value.insert(p_to); - E.value.erase(p_from); - } - } - if (singleton->parser_map.has(p_from) && !p_from.is_empty()) { singleton->parser_map[p_to] = singleton->parser_map[p_from]; } @@ -173,15 +165,6 @@ void GDScriptCache::remove_script(const String &p_path) { return; } - for (KeyValue> &E : singleton->packed_scene_dependencies) { - if (!E.value.has(p_path)) { - continue; - } - E.value.erase(p_path); - } - - GDScriptCache::clear_unreferenced_packed_scenes(); - if (singleton->parser_map.has(p_path)) { singleton->parser_map[p_path]->clear(); singleton->parser_map.erase(p_path); @@ -361,62 +344,6 @@ void GDScriptCache::remove_static_script(const String &p_fqcn) { singleton->static_gdscript_cache.erase(p_fqcn); } -Ref GDScriptCache::get_packed_scene(const String &p_path, Error &r_error, const String &p_owner) { - MutexLock lock(singleton->mutex); - - String path = p_path; - if (path.begins_with("uid://")) { - path = ResourceUID::get_singleton()->get_id_path(ResourceUID::get_singleton()->text_to_id(path)); - } - - if (singleton->packed_scene_cache.has(path)) { - singleton->packed_scene_dependencies[path].insert(p_owner); - return singleton->packed_scene_cache[path]; - } - - Ref scene = ResourceCache::get_ref(path); - if (scene.is_valid()) { - singleton->packed_scene_cache[path] = scene; - singleton->packed_scene_dependencies[path].insert(p_owner); - return scene; - } - scene.instantiate(); - - r_error = OK; - if (path.is_empty()) { - r_error = ERR_FILE_BAD_PATH; - return scene; - } - - scene->set_path(path); - singleton->packed_scene_cache[path] = scene; - singleton->packed_scene_dependencies[path].insert(p_owner); - - scene->reload_from_file(); - return scene; -} - -void GDScriptCache::clear_unreferenced_packed_scenes() { - if (singleton == nullptr) { - return; - } - - MutexLock lock(singleton->mutex); - - if (singleton->cleared) { - return; - } - - for (KeyValue> &E : singleton->packed_scene_dependencies) { - if (E.value.size() > 0 || !ResourceLoader::is_imported(E.key)) { - continue; - } - - singleton->packed_scene_dependencies.erase(E.key); - singleton->packed_scene_cache.erase(E.key); - } -} - void GDScriptCache::clear() { if (singleton == nullptr) { return; @@ -439,16 +366,10 @@ void GDScriptCache::clear() { E->clear(); } - singleton->packed_scene_dependencies.clear(); - singleton->packed_scene_cache.clear(); - parser_map_refs.clear(); singleton->parser_map.clear(); singleton->shallow_gdscript_cache.clear(); singleton->full_gdscript_cache.clear(); - - singleton->packed_scene_cache.clear(); - singleton->packed_scene_dependencies.clear(); } GDScriptCache::GDScriptCache() { diff --git a/modules/gdscript/gdscript_cache.h b/modules/gdscript/gdscript_cache.h index 0a0f403e44bb..c4286a62e467 100644 --- a/modules/gdscript/gdscript_cache.h +++ b/modules/gdscript/gdscript_cache.h @@ -37,7 +37,6 @@ #include "core/os/mutex.h" #include "core/templates/hash_map.h" #include "core/templates/hash_set.h" -#include "scene/resources/packed_scene.h" class GDScriptAnalyzer; class GDScriptParser; @@ -81,8 +80,6 @@ class GDScriptCache { HashMap> full_gdscript_cache; HashMap> static_gdscript_cache; HashMap> dependencies; - HashMap> packed_scene_cache; - HashMap> packed_scene_dependencies; friend class GDScript; friend class GDScriptParserRef; @@ -106,9 +103,6 @@ class GDScriptCache { static void add_static_script(Ref p_script); static void remove_static_script(const String &p_fqcn); - static Ref get_packed_scene(const String &p_path, Error &r_error, const String &p_owner = ""); - static void clear_unreferenced_packed_scenes(); - static void clear(); GDScriptCache();