using System; using System.Collections; using System.Collections.Generic; using BITKit.Net.Examples; using UnityEngine; using Cysharp.Threading.Tasks; namespace BITKit.UX.Utils { public class UXNetState : MonoBehaviour { [SerializeField, SerializeReference, SubclassSelector] private INetClient netClient; [SerializeField, SerializeReference, SubclassSelector] private INetProvider netProvider; [SerializeField] private UXElement connectedIcon; [SerializeField] private UXElement disconnectedIcon; [SerializeField] private UXLabel pingLabel; private void Start() { OnDisconnected(); netClient.OnConnected += OnConnected; netClient.OnDisconnected += OnDisconnected; netClient.OnConnectedFailed += OnDisconnected; netProvider.AddCommandListener(OnNetPing); } private async void OnConnected() { await UniTask.SwitchToMainThread(); connectedIcon.SetActive(true); disconnectedIcon.SetActive(false); } private async void OnDisconnected() { await UniTask.SwitchToMainThread(); connectedIcon.SetActive(false); disconnectedIcon.SetActive(true); } private void OnNetPing(NetClientPingCommand obj) { pingLabel.Set(obj.Ping.ToString()); } } }