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);
}
}
}
}