Files
FlaxEngine/Source/Editor/Progress/Handlers/CompileScriptsProgress.cs
Wojciech Figat 7b20bc38a4 Merge branch '1.5' into dotnet7
# Conflicts:
#	Content/Shaders/GI/DDGI.flax
#	Content/Shaders/GI/GlobalSurfaceAtlas.flax
#	Content/Shaders/TAA.flax
#	Content/Shaders/VolumetricFog.flax
#	Source/Tools/Flax.Build/Projects/VisualStudio/VCProjectGenerator.cs
2023-01-17 11:52:52 +01:00

68 lines
2.1 KiB
C#

// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using FlaxEditor.Utilities;
namespace FlaxEditor.Progress.Handlers
{
/// <summary>
/// Scripts compilation progress reporting handler.
/// </summary>
/// <seealso cref="FlaxEditor.Progress.ProgressHandler" />
public sealed class CompileScriptsProgress : ProgressHandler
{
private SelectionCache _selectionCache;
/// <summary>
/// Initializes a new instance of the <see cref="CompileScriptsProgress"/> class.
/// </summary>
public CompileScriptsProgress()
{
// Link for events
ScriptsBuilder.CompilationBegin += OnStart;
ScriptsBuilder.CompilationSuccess += OnEnd;
ScriptsBuilder.CompilationFailed += OnCompilationFailed;
ScriptsBuilder.CompilationStarted += () => OnUpdate(0.2f, "Compiling scripts...");
ScriptsBuilder.ScriptsReloadCalled += () => OnUpdate(0.8f, "Reloading scripts...");
ScriptsBuilder.ScriptsReloadBegin += OnScriptsReloadBegin;
ScriptsBuilder.ScriptsReloadEnd += OnScriptsReloadEnd;
ScriptsBuilder.ScriptsReload += OnScriptsReload;
}
private void OnScriptsReloadBegin()
{
if (_selectionCache == null)
_selectionCache = new SelectionCache();
_selectionCache.Cache();
// Clear references to the user scripts (we gonna reload an assembly)
Editor.Instance.Scene.ClearRefsToSceneObjects(true);
}
private void OnScriptsReload()
{
#if !USE_NETCORE
// Clear types cache
Newtonsoft.Json.JsonSerializer.ClearCache();
#endif
}
private void OnCompilationFailed()
{
OnFail("Scripts compilation failed");
}
private void OnScriptsReloadEnd()
{
_selectionCache.Restore();
}
/// <inheritdoc />
protected override void OnStart()
{
base.OnStart();
OnUpdate(0, "Starting scripts compilation...");
}
}
}