init free 2.1.3
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
// 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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user