#if UNIVOICE_MIRROR_NETWORK || UNIVOICE_NETWORK_MIRROR using Mirror; using System; using UnityEngine; namespace Adrenak.UniVoice.Networks { /// /// Observes the mode of the Mirror NetworkManager and fires an event /// when it changes /// public class MirrorModeObserver : MonoBehaviour { /// /// Event fired when the Mirror NetworkManager changes the mode /// public event Action ModeChanged; [Obsolete("Use .New instead.", true)] public MirrorModeObserver() { } NetworkManagerMode lastMode = NetworkManagerMode.Offline; /// /// Creates a new instance of this class on a GameObject /// /// public static MirrorModeObserver New() { var go = new GameObject("MirrorEventProvider"); DontDestroyOnLoad(go); return go.AddComponent(); } void Update() { var newMode = NetworkManager.singleton.mode; if (lastMode != newMode) { ModeChanged?.Invoke(lastMode, newMode); lastMode = newMode; } } } } #endif