Fix custom content and importers blocking scripting reload

This commit is contained in:
2024-04-28 22:28:34 +03:00
committed by Ari Vuollet
parent 714cdd84ad
commit 7f317d0fb6
7 changed files with 135 additions and 8 deletions

View File

@@ -88,6 +88,8 @@ namespace FlaxEditor.Modules
// Register AssetItems serialization helper (serialize ref ID only)
FlaxEngine.Json.JsonSerializer.Settings.Converters.Add(new AssetItemConverter());
ScriptsBuilder.ScriptsReloadBegin += OnScriptsReloadBegin;
}
private void OnContentAssetDisposing(Asset asset)
@@ -1313,6 +1315,47 @@ namespace FlaxEditor.Modules
}
}
private void OnScriptsReloadBegin()
{
var enabledEvents = _enableEvents;
_enableEvents = false;
_isDuringFastSetup = true;
var startItems = _itemsCreated;
foreach (var project in Projects)
{
if (project.Content != null)
{
//Dispose(project.Content.Folder);
for (int i = 0; i < project.Content.Folder.Children.Count; i++)
{
Dispose(project.Content.Folder.Children[i]);
i--;
}
}
if (project.Source != null)
{
//Dispose(project.Source.Folder);
for (int i = 0; i < project.Source.Folder.Children.Count; i++)
{
Dispose(project.Source.Folder.Children[i]);
i--;
}
}
}
List<ContentProxy> removeProxies = new List<ContentProxy>();
foreach (var proxy in Editor.Instance.ContentDatabase.Proxy)
{
if (proxy.GetType().IsCollectible)
removeProxies.Add(proxy);
}
foreach (var proxy in removeProxies)
RemoveProxy(proxy, false);
_isDuringFastSetup = false;
_enableEvents = enabledEvents;
}
/// <inheritdoc />
public override void OnUpdate()
{
@@ -1340,6 +1383,7 @@ namespace FlaxEditor.Modules
public override void OnExit()
{
FlaxEngine.Content.AssetDisposing -= OnContentAssetDisposing;
ScriptsBuilder.ScriptsReloadBegin -= OnScriptsReloadBegin;
// Disable events
_enableEvents = false;