Files
FlaxEngine/Source/Editor/Scripting/ScriptsBuilder.cs
2024-02-26 19:00:48 +01:00

142 lines
4.5 KiB
C#

// Copyright (c) 2012-2024 Wojciech Figat. All rights reserved.
using System;
namespace FlaxEditor
{
partial class ScriptsBuilder
{
/// <summary>
/// Compilation end event delegate.
/// </summary>
/// <param name="success">False if compilation has failed, otherwise true.</param>
public delegate void CompilationEndDelegate(bool success);
/// <summary>
/// Compilation message events delegate.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="file">The target file.</param>
/// <param name="line">The target line.</param>
public delegate void CompilationMessageDelegate(string message, string file, int line);
/// <summary>
/// Occurs when compilation ends.
/// </summary>
public static event CompilationEndDelegate CompilationEnd;
/// <summary>
/// Occurs when compilation success.
/// </summary>
public static event Action CompilationSuccess;
/// <summary>
/// Occurs when compilation failed.
/// </summary>
public static event Action CompilationFailed;
/// <summary>
/// Occurs when compilation begins.
/// </summary>
public static event Action CompilationBegin;
/// <summary>
/// Occurs when compilation just started.
/// </summary>
public static event Action CompilationStarted;
/// <summary>
/// Occurs when user scripts reload action is called.
/// </summary>
public static event Action ScriptsReloadCalled;
/// <summary>
/// Occurs when user scripts reload starts.
/// User objects should be removed at this point to reduce leaks and issues. Game scripts and game editor scripts assemblies will be reloaded.
/// </summary>
public static event Action ScriptsReloadBegin;
/// <summary>
/// Occurs when user scripts reload is performed (just before the actual reload, scenes are serialized and unloaded). All user objects should be cleanup.
/// </summary>
public static event Action ScriptsReload;
/// <summary>
/// Occurs when user scripts reload ends.
/// </summary>
public static event Action ScriptsReloadEnd;
/// <summary>
/// Occurs when engine loads game scripts.
/// </summary>
public static event Action ScriptsLoaded;
/// <summary>
/// Occurs when code editor starts asynchronous open a file or a solution.
/// </summary>
public static event Action CodeEditorAsyncOpenBegin;
/// <summary>
/// Occurs when code editor ends asynchronous open a file or a solution.
/// </summary>
public static event Action CodeEditorAsyncOpenEnd;
internal enum EventType
{
CompileBegin = 0,
CompileStarted = 1,
CompileEndGood = 2,
CompileEndFailed = 3,
ReloadCalled = 4,
ReloadBegin = 5,
Reload = 6,
ReloadEnd = 7,
ScriptsLoaded = 8,
}
internal static void Internal_OnEvent(EventType type)
{
switch (type)
{
case EventType.CompileBegin:
CompilationBegin?.Invoke();
break;
case EventType.CompileStarted:
CompilationStarted?.Invoke();
break;
case EventType.CompileEndGood:
CompilationEnd?.Invoke(true);
CompilationSuccess?.Invoke();
break;
case EventType.CompileEndFailed:
CompilationEnd?.Invoke(false);
CompilationFailed?.Invoke();
break;
case EventType.ReloadCalled:
ScriptsReloadCalled?.Invoke();
break;
case EventType.ReloadBegin:
ScriptsReloadBegin?.Invoke();
break;
case EventType.Reload:
ScriptsReload?.Invoke();
break;
case EventType.ReloadEnd:
ScriptsReloadEnd?.Invoke();
break;
case EventType.ScriptsLoaded:
ScriptsLoaded?.Invoke();
break;
}
}
internal static void Internal_OnCodeEditorEvent(bool isEnd)
{
if (isEnd)
CodeEditorAsyncOpenEnd?.Invoke();
else
CodeEditorAsyncOpenBegin?.Invoke();
}
}
}