98 lines
2.7 KiB
C#
98 lines
2.7 KiB
C#
// Copyright (c) Supernova Technologies LLC
|
|
using UnityEngine;
|
|
|
|
namespace Nova.Compat
|
|
{
|
|
internal static class NovaApplication
|
|
{
|
|
public static event System.Action EditorDelayCall
|
|
{
|
|
add
|
|
{
|
|
#if UNITY_EDITOR
|
|
UnityEditor.EditorApplication.delayCall += () => value?.Invoke();
|
|
#endif
|
|
}
|
|
remove
|
|
{
|
|
#if UNITY_EDITOR
|
|
Debug.LogError("NovaApplication.DelayCall doesn't support unsubscribing because it wraps UnityEditor.EditorApplication.delayCall, which uses its own editor-only delegate type" +
|
|
" that isn't accessible in an Editor-agnostic dll. Currently not worth remapping events since we don't need that functionality at time of writing.");
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
public static event System.Action EditorBeforeAssemblyReload = null;
|
|
private static void HandleBeforeAssemblyReload()
|
|
{
|
|
EditorBeforeAssemblyReload?.Invoke();
|
|
}
|
|
|
|
|
|
[System.Diagnostics.DebuggerBrowsable(System.Diagnostics.DebuggerBrowsableState.Never)]
|
|
public static readonly bool IsEditor =
|
|
#if UNITY_EDITOR
|
|
true;
|
|
#else
|
|
false;
|
|
#endif
|
|
|
|
[System.Diagnostics.DebuggerBrowsable(System.Diagnostics.DebuggerBrowsableState.Never)]
|
|
public const bool ConstIsEditor =
|
|
#if UNITY_EDITOR
|
|
true;
|
|
#else
|
|
false;
|
|
#endif
|
|
|
|
public static void QueueEditorPlayerLoop()
|
|
{
|
|
#if UNITY_EDITOR
|
|
UnityEditor.EditorApplication.QueuePlayerLoopUpdate();
|
|
#endif
|
|
}
|
|
|
|
public static void MarkDirty(Object obj)
|
|
{
|
|
#if UNITY_EDITOR
|
|
UnityEditor.EditorUtility.SetDirty(obj);
|
|
#endif
|
|
}
|
|
|
|
|
|
[System.Diagnostics.DebuggerBrowsable(System.Diagnostics.DebuggerBrowsableState.Never)]
|
|
public static bool IsPlaying { get; private set; } =
|
|
#if UNITY_EDITOR
|
|
false;
|
|
#else
|
|
true;
|
|
#endif
|
|
|
|
|
|
public static bool InPlayer(Object obj)
|
|
{
|
|
#if UNITY_EDITOR
|
|
return Application.IsPlaying(obj);
|
|
#else
|
|
return true;
|
|
#endif
|
|
}
|
|
|
|
#if UNITY_EDITOR
|
|
[UnityEditor.InitializeOnLoadMethod]
|
|
private static void Init()
|
|
{
|
|
IsPlaying = UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode;
|
|
UnityEditor.EditorApplication.playModeStateChanged += HandlePlayModeStateChanged;
|
|
UnityEditor.AssemblyReloadEvents.beforeAssemblyReload += HandleBeforeAssemblyReload;
|
|
}
|
|
|
|
private static void HandlePlayModeStateChanged(UnityEditor.PlayModeStateChange state)
|
|
{
|
|
IsPlaying = UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode;
|
|
}
|
|
#endif
|
|
}
|
|
}
|