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 } } }