You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
1.7 KiB
C#

using Fusion;
using TMPro;
using UnityEngine;
namespace Projectiles.UI
{
public class UIGameInfo : UIBehaviour
{
// PRIVATE MEMBERS
[SerializeField]
private TextMeshProUGUI _sessionNameText;
[SerializeField]
private TextMeshProUGUI _regionText;
[SerializeField]
private TextMeshProUGUI _fpsText;
[SerializeField]
private TextMeshProUGUI _rttText;
[SerializeField]
private TextMeshProUGUI _connectionTypeText;
private int _lastFPS;
private int _lastRTT = -1;
private int _frameCount;
private float _deltaTime;
private double _rtt;
private ConnectionType _connectionType;
// MONOBEHAVIOUR
protected void OnEnable()
{
UpdateInfo(GameUI.Runner, true);
}
protected void Update()
{
UpdateInfo(GameUI.Runner);
}
// PRIVATE MEMBERS
private void UpdateInfo(NetworkRunner runner, bool full = false)
{
if (runner == null)
return;
_frameCount++;
_deltaTime += Time.deltaTime;
_rtt += runner.GetPlayerRtt(runner.LocalPlayer);
if (_deltaTime > 0.25f)
{
int fps = Mathf.RoundToInt(_frameCount / _deltaTime);
if (fps != _lastFPS)
{
_lastFPS = fps;
_fpsText.text = fps.ToString();
}
int rtt = (int)(_rtt * 1000.0 / _frameCount);
if (rtt != _lastRTT)
{
_lastRTT = rtt;
_rttText.text = rtt > 0 ? rtt.ToString() : "---";
}
_frameCount = 0;
_deltaTime = 0f;
_rtt = 0.0;
}
if (_connectionType != runner.CurrentConnectionType)
{
_connectionType = runner.CurrentConnectionType;
_connectionTypeText.text = _connectionType.ToString();
}
if (full == true)
{
_sessionNameText.text = runner.SessionInfo.Name;
_regionText.text = runner.SessionInfo.Region;
}
}
}
}