using UnityEngine; using UnityEngine.InputSystem; using TMPro; using NeonTea.Quakeball.Networking; using System; public class NetDebugScreen : MonoBehaviour { public RectTransform BackgroundPanel; public TMP_Text ReceivedText; public TMP_Text SentText; public float UpdateInterval = 5f; private InputAction ToggleNetDebug; private float LastUpdate; private bool IsOpen; private void Start() { ToggleNetDebug = new InputAction("Toggle Net Debug", binding: "/F3"); ToggleNetDebug.Enable(); ToggleNetDebug.performed += _ => { IsOpen = !IsOpen; BackgroundPanel.gameObject.SetActive(IsOpen); }; } private void Update() { bool NetworkingAvailable = Net.Singleton.Instance != null && Net.Singleton.Instance.Peer.Running; if (IsOpen && !NetworkingAvailable) { ReceivedText.text = "No networking data to show"; SentText.text = ""; } else if (IsOpen && NetworkingAvailable) { var Peer = Net.Singleton.Instance.Peer; if (Time.time - LastUpdate > UpdateInterval) { LastUpdate = Time.time; float ToSeconds = 1f / (Peer.TrafficDataInterval / 1000f); string received = $"Total Bytes Receivd: {Peer.TrafficReceived * ToSeconds} B/s\nReceived by packet:"; foreach (Type t in Peer.TrafficReceivedByPacket.Keys) { received += $"\n{t.Name} - {Peer.TrafficReceivedByPacket[t] * ToSeconds} B/s"; } ReceivedText.text = received; string sent = $"Total Bytes Sent: {Net.Singleton.Instance.Peer.TrafficSent * ToSeconds} B/s\nSent by packet:"; foreach (Type t in Peer.TrafficSentByPacket.Keys) { sent += $"\n{t.Name} - {Peer.TrafficSentByPacket[t] * ToSeconds} B/s"; } SentText.text = sent; } } } }