Merge pull request #87838 from paulloz/dotnet/fix-duplicate-key-on-reload

C#: Fix duplicate key issue on reload
This commit is contained in:
Rémi Verschelde 2024-02-02 12:05:14 +01:00
commit d0f8b76ffd
No known key found for this signature in database
GPG key ID: C3336907360768E1
2 changed files with 12 additions and 7 deletions

View file

@ -310,13 +310,6 @@ namespace Godot.Bridge
_pathTypeBiMap.Add(scriptPathAttr.Path, type);
// This method may be called before initialization.
if (NativeFuncs.godotsharp_dotnet_module_is_initialized().ToBool() && Engine.IsEditorHint())
{
using godot_string scriptPath = Marshaling.ConvertStringToNative(scriptPathAttr.Path);
NativeFuncs.godotsharp_internal_editor_file_system_update_file(scriptPath);
}
if (AlcReloadCfg.IsAlcReloadingEnabled)
{
AddTypeForAlcReloading(type);
@ -366,6 +359,16 @@ namespace Godot.Bridge
}
}
}
// This method may be called before initialization.
if (NativeFuncs.godotsharp_dotnet_module_is_initialized().ToBool() && Engine.IsEditorHint())
{
foreach (var scriptPath in _pathTypeBiMap.Paths)
{
using godot_string nativeScriptPath = Marshaling.ConvertStringToNative(scriptPath);
NativeFuncs.godotsharp_internal_editor_file_system_update_file(nativeScriptPath);
}
}
}
[UnmanagedCallersOnly]

View file

@ -61,6 +61,8 @@ public static partial class ScriptManagerBridge
private System.Collections.Generic.Dictionary<string, Type> _pathTypeMap = new();
private System.Collections.Generic.Dictionary<Type, string> _typePathMap = new();
public System.Collections.Generic.IEnumerable<string> Paths => _pathTypeMap.Keys;
public void Add(string scriptPath, Type scriptType)
{
_pathTypeMap.Add(scriptPath, scriptType);