51 lines
1.2 KiB
C#
51 lines
1.2 KiB
C#
|
#if UNITY_EDITOR
|
|||
|
using System;
|
|||
|
using UnityEditor;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace FishNet.Editing
|
|||
|
{
|
|||
|
|
|||
|
[InitializeOnLoad]
|
|||
|
public class PlayModeTracker
|
|||
|
{
|
|||
|
static PlayModeTracker()
|
|||
|
{
|
|||
|
EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
|
|||
|
}
|
|||
|
|
|||
|
~PlayModeTracker()
|
|||
|
{
|
|||
|
EditorApplication.playModeStateChanged -= OnPlayModeStateChanged;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// DateTime when the editor last exited playmode.
|
|||
|
/// </summary>
|
|||
|
private static DateTime _quitTime = DateTime.MaxValue;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// True if the editor has exited playmode within past.
|
|||
|
/// </summary>
|
|||
|
/// <param name="past"></param>
|
|||
|
/// <returns></returns>
|
|||
|
internal static bool QuitRecently(float past)
|
|||
|
{
|
|||
|
past *= 1000;
|
|||
|
return ((DateTime.Now - _quitTime).TotalMilliseconds < past);
|
|||
|
}
|
|||
|
|
|||
|
private static void OnPlayModeStateChanged(PlayModeStateChange stateChange)
|
|||
|
{
|
|||
|
switch (stateChange)
|
|||
|
{
|
|||
|
case (PlayModeStateChange.ExitingPlayMode):
|
|||
|
_quitTime = DateTime.Now;
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
#endif
|