#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