mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 21:51:22 +00:00 
			
		
		
		
	Keep a weak reference to orphan subclasses to reuse on class reload
This commit is contained in:
		
							parent
							
								
									3d88a7bb22
								
							
						
					
					
						commit
						86aa12e806
					
				
					 3 changed files with 63 additions and 5 deletions
				
			
		|  | @ -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); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 ChibiDenDen
						ChibiDenDen