Skip to content

Commit bc0b184

Browse files
fix: prevent OnPerformanceTickData from sending data on null
If something causes an exception it's possible that the profiler never allocates data. in these cases, there is no point in sending data outside of MLAPI
1 parent c71edf9 commit bc0b184

File tree

1 file changed

+34
-12
lines changed

1 file changed

+34
-12
lines changed

com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -652,11 +652,7 @@ public void NetworkUpdate(NetworkUpdateStage updateStage)
652652

653653
private void OnNetworkEarlyUpdate()
654654
{
655-
PerformanceDataManager.BeginNewTick();
656-
if (NetworkConfig.NetworkTransport is ITransportProfilerData profileTransport)
657-
{
658-
profileTransport.BeginNewTick();
659-
}
655+
ProfilerBeginTick();
660656

661657
if (IsListening)
662658
{
@@ -760,13 +756,7 @@ private void OnNetworkPreUpdate()
760756
}
761757
}
762758

763-
if (NetworkConfig.NetworkTransport is ITransportProfilerData profileTransport)
764-
{
765-
var transportProfilerData = profileTransport.GetTransportProfilerData();
766-
PerformanceDataManager.AddTransportData(transportProfilerData);
767-
}
768-
769-
OnPerformanceDataEvent?.Invoke(PerformanceDataManager.GetData());
759+
NotifyProfilerListeners();
770760
}
771761

772762
internal void UpdateNetworkTime(ulong clientId, float netTime, float receiveTime, bool warp = false)
@@ -1495,5 +1485,37 @@ internal void HandleApproval(ulong clientId, bool createPlayerObject, ulong? pla
14951485
NetworkConfig.NetworkTransport.DisconnectRemoteClient(clientId);
14961486
}
14971487
}
1488+
1489+
private void ProfilerBeginTick()
1490+
{
1491+
PerformanceDataManager.BeginNewTick();
1492+
if (NetworkConfig.NetworkTransport is ITransportProfilerData profileTransport)
1493+
{
1494+
profileTransport.BeginNewTick();
1495+
}
1496+
}
1497+
1498+
private void NotifyProfilerListeners()
1499+
{
1500+
var data = PerformanceDataManager.GetData();
1501+
var eventHandler = OnPerformanceDataEvent;
1502+
if (eventHandler != null)
1503+
{
1504+
if (data != null)
1505+
{
1506+
if (NetworkConfig.NetworkTransport is ITransportProfilerData profileTransport)
1507+
{
1508+
var transportProfilerData = profileTransport.GetTransportProfilerData();
1509+
PerformanceDataManager.AddTransportData(transportProfilerData);
1510+
}
1511+
1512+
eventHandler.Invoke(data);
1513+
}
1514+
else
1515+
{
1516+
NetworkLog.LogWarning("No data available. Did you forget to call PerformanceDataManager.BeginNewTick() first?");
1517+
}
1518+
}
1519+
}
14981520
}
14991521
}

0 commit comments

Comments
 (0)