Fix 'Script class can only be set together with base class name' error with .NET typed collections upon rebuild

This commit is contained in:
Juan Pablo Arce 2025-05-10 03:07:16 -03:00
parent 19bb18716e
commit 3d7c4b8012

View file

@ -833,6 +833,25 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
return;
}
// Add all script types to script bridge before reloading exports,
// so typed collections can be reconstructed correctly regardless of script load order.
for (Ref<CSharpScript> &scr : to_reload) {
if (!scr->get_path().is_empty() && !scr->get_path().begins_with("csharp://")) {
String script_path = scr->get_path();
bool valid = GDMonoCache::managed_callbacks.ScriptManagerBridge_AddScriptBridge(scr.ptr(), &script_path);
if (valid) {
scr->valid = true;
CSharpScript::update_script_class_info(scr);
// Ensure that the next call to CSharpScript::reload will refresh the exports
scr->reload_invalidated = true;
}
}
}
List<Ref<CSharpScript>> to_reload_state;
for (Ref<CSharpScript> &scr : to_reload) {