using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace GameKit.Dependencies.Utilities
{
#if UNITY_EDITOR
[InitializeOnLoad]
#endif
public static class ApplicationState
{
#if !UNITY_EDITOR
///
/// True if application is quitting.
///
private static bool _isQuitting;
#endif
static ApplicationState()
{
#if !UNITY_EDITOR
_isQuitting = false;
#endif
Application.quitting -= Application_quitting;
Application.quitting += Application_quitting;
}
private static void Application_quitting()
{
#if !UNITY_EDITOR
_isQuitting = true;
#endif
}
///
/// Returns if the application is quitting for editor or builds.
///
///
public static bool IsQuitting()
{
#if UNITY_EDITOR
if ((!EditorApplication.isPlayingOrWillChangePlaymode && EditorApplication.isPlaying) ||
!EditorApplication.isPlaying)
return true;
else
return false;
#else
return _isQuitting;
#endif
}
///
/// Returns if the application is playing for editor or builds.
///
///
public static bool IsPlaying()
{
#if UNITY_EDITOR
return EditorApplication.isPlaying;
#else
return Application.isPlaying;
#endif
}
///
/// Quits the application for editor or builds.
///
public static void Quit()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
}
}