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 |