using UnityEngine; namespace XRMultiplayer { /// /// A very simple script that will enable or disable objects based on the Network Connection State. /// public class ConnectionToggler : MonoBehaviour { /// /// Enables all objects on connect. /// Disables all objects on disconnect. /// [SerializeField] GameObject[] objectsToEnableOnline; /// /// Enables all objects on disconnect. /// Disables all objects on connect. /// [SerializeField] GameObject[] objectsToEnableOffline; /// void OnEnable() { XRINetworkGameManager.Connected.Subscribe(ToggleNetworkObjects); ToggleNetworkObjects(XRINetworkGameManager.Connected.Value); } void Start() { XRINetworkGameManager.Instance.connectionFailedAction += (reason) => { ToggleNetworkObjects(false); }; } void OnDestroy() { XRINetworkGameManager.Instance.connectionFailedAction -= (reason) => { ToggleNetworkObjects(false); }; } /// void OnDisable() { XRINetworkGameManager.Connected.Unsubscribe(ToggleNetworkObjects); } /// /// Toggles objects on or off based on whether or not connected. /// /// /// /// Whether or not players are connected to a networked game. /// protected virtual void ToggleNetworkObjects(bool online) { foreach (GameObject g in objectsToEnableOnline) { if (g == null) continue; g.SetActive(online); } foreach (GameObject g in objectsToEnableOffline) { if (g == null) continue; g.SetActive(!online); } } } }