123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using System;
- using AOT;
- using System.Runtime.InteropServices; // for DllImport
- using UnityEngine;
- namespace WebGLSupport
- {
- static class WebGLWindowPlugin
- {
- #if UNITY_WEBGL && !UNITY_EDITOR
- [DllImport("__Internal")]
- public static extern void WebGLWindowOnFocus(Action cb);
- [DllImport("__Internal")]
- public static extern void WebGLWindowOnBlur(Action cb);
- #else
- public static void WebGLWindowOnFocus(Action cb) { }
- public static void WebGLWindowOnBlur(Action cb) { }
- #endif
- }
- public static class WebGLWindow
- {
- public static bool Focus { get; private set; }
- public static event Action OnFocusEvent = () => { };
- public static event Action OnBlurEvent = () => { };
- static void Init()
- {
- Focus = true;
- WebGLWindowPlugin.WebGLWindowOnFocus(OnWindowFocus);
- WebGLWindowPlugin.WebGLWindowOnBlur(OnWindowBlur);
- }
- [MonoPInvokeCallback(typeof(Action))]
- static void OnWindowFocus()
- {
- Focus = true;
- OnFocusEvent();
- }
- [MonoPInvokeCallback(typeof(Action))]
- static void OnWindowBlur()
- {
- Focus = false;
- OnBlurEvent();
- }
- [RuntimeInitializeOnLoadMethod]
- static void RuntimeInitializeOnLoadMethod()
- {
- Init();
- }
- }
- }
|