aha
This commit is contained in:
85
Assets/Mirror/Components/Profiling/NetworkBandwidthGraph.cs
Normal file
85
Assets/Mirror/Components/Profiling/NetworkBandwidthGraph.cs
Normal file
@ -0,0 +1,85 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
namespace Mirror
|
||||
{
|
||||
public class NetworkBandwidthGraph : BaseUIGraph
|
||||
{
|
||||
int dataIn;
|
||||
int dataOut;
|
||||
|
||||
void Start()
|
||||
{
|
||||
// Ordering, Awake happens before NetworkDiagnostics reset
|
||||
NetworkDiagnostics.InMessageEvent += OnReceive;
|
||||
NetworkDiagnostics.OutMessageEvent += OnSend;
|
||||
}
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
// If we've been inactive, clear counter
|
||||
dataIn = 0;
|
||||
dataOut = 0;
|
||||
}
|
||||
|
||||
void OnDestroy()
|
||||
{
|
||||
NetworkDiagnostics.InMessageEvent -= OnReceive;
|
||||
NetworkDiagnostics.OutMessageEvent -= OnSend;
|
||||
}
|
||||
|
||||
void OnSend(NetworkDiagnostics.MessageInfo obj) => dataOut += obj.bytes;
|
||||
|
||||
void OnReceive(NetworkDiagnostics.MessageInfo obj) => dataIn += obj.bytes;
|
||||
|
||||
protected override void CollectData(int category, out float value, out GraphAggregationMode mode)
|
||||
{
|
||||
mode = GraphAggregationMode.PerSecond;
|
||||
switch (category)
|
||||
{
|
||||
case 0:
|
||||
value = dataIn;
|
||||
dataIn = 0;
|
||||
break;
|
||||
case 1:
|
||||
value = dataOut;
|
||||
dataOut = 0;
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException($"{category} is not valid.");
|
||||
}
|
||||
}
|
||||
|
||||
static readonly string[] Units = new[] { "B/s", "KiB/s", "MiB/s" };
|
||||
const float UnitScale = 1024;
|
||||
|
||||
protected override string FormatValue(float value)
|
||||
{
|
||||
string selectedUnit = null;
|
||||
for (int i = 0; i < Units.Length; i++)
|
||||
{
|
||||
string unit = Units[i];
|
||||
selectedUnit = unit;
|
||||
if (i > 0)
|
||||
value /= UnitScale;
|
||||
|
||||
if (value < UnitScale)
|
||||
break;
|
||||
}
|
||||
|
||||
return $"{value:N0} {selectedUnit}";
|
||||
}
|
||||
|
||||
protected override void OnValidate()
|
||||
{
|
||||
base.OnValidate();
|
||||
if (CategoryColors.Length != 2)
|
||||
CategoryColors = new[]
|
||||
{
|
||||
Color.red, // min
|
||||
Color.green // max
|
||||
};
|
||||
|
||||
IsStacked = false;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user