Skip to content

Commit 39604a3

Browse files
fix: prevent OnPerformanceTickData from sending data on null (#614)
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 db2a9f5 commit 39604a3

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)