summaryrefslogtreecommitdiffstats
path: root/modules/gdscript/gdscript_analyzer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gdscript/gdscript_analyzer.cpp')
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp30
1 files changed, 7 insertions, 23 deletions
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index 8b0b7a5102..f1c022c43c 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -3122,29 +3122,13 @@ void GDScriptAnalyzer::reduce_identifier(GDScriptParser::IdentifierNode *p_ident
}
} else if (ResourceLoader::get_resource_type(autoload.path) == "PackedScene") {
Error err = OK;
- Ref<PackedScene> scene = GDScriptCache::get_packed_scene(autoload.path, err);
- if (err == OK && scene->get_state().is_valid()) {
- Ref<SceneState> state = scene->get_state();
- if (state->get_node_count() > 0) {
- const int ROOT_NODE = 0;
- for (int i = 0; i < state->get_node_property_count(ROOT_NODE); i++) {
- if (state->get_node_property_name(ROOT_NODE, i) != SNAME("script")) {
- continue;
- }
-
- Ref<GDScript> scr = state->get_node_property_value(ROOT_NODE, i);
- if (scr.is_null()) {
- continue;
- }
-
- Ref<GDScriptParserRef> singl_parser = get_parser_for(scr->get_path());
- if (singl_parser.is_valid()) {
- err = singl_parser->raise_status(GDScriptParserRef::INTERFACE_SOLVED);
- if (err == OK) {
- result = type_from_metatype(singl_parser->get_parser()->head->get_datatype());
- }
- }
- break;
+ Ref<GDScript> scr = GDScriptCache::get_packed_scene_script(autoload.path, err);
+ if (err == OK && scr.is_valid()) {
+ Ref<GDScriptParserRef> singl_parser = get_parser_for(scr->get_path());
+ if (singl_parser.is_valid()) {
+ err = singl_parser->raise_status(GDScriptParserRef::INTERFACE_SOLVED);
+ if (err == OK) {
+ result = type_from_metatype(singl_parser->get_parser()->head->get_datatype());
}
}
}