You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Keep a weak reference to orphan subclasses to reuse on class reload
This commit is contained in:
@@ -2123,15 +2123,21 @@ void GDScriptCompiler::_make_scripts(GDScript *p_script, const GDScriptParser::C
|
||||
StringName name = p_class->subclasses[i]->name;
|
||||
|
||||
Ref<GDScript> subclass;
|
||||
String fully_qualified_name = p_script->fully_qualified_name + "::" + name;
|
||||
|
||||
if (old_subclasses.has(name)) {
|
||||
subclass = old_subclasses[name];
|
||||
} else {
|
||||
subclass.instance();
|
||||
Ref<GDScript> orphan_subclass = GDScriptLanguage::get_singleton()->get_orphan_subclass(fully_qualified_name);
|
||||
if (orphan_subclass.is_valid()) {
|
||||
subclass = orphan_subclass;
|
||||
} else {
|
||||
subclass.instance();
|
||||
}
|
||||
}
|
||||
|
||||
subclass->_owner = p_script;
|
||||
subclass->fully_qualified_name = p_script->fully_qualified_name + "::" + name;
|
||||
subclass->fully_qualified_name = fully_qualified_name;
|
||||
p_script->subclasses.insert(name, subclass);
|
||||
|
||||
_make_scripts(subclass.ptr(), p_class->subclasses[i], false);
|
||||
|
||||
Reference in New Issue
Block a user