@@ -37,6 +37,7 @@ internal class NetworkMetrics : INetworkMetrics
3737 readonly EventMetric < ServerLogEvent > m_ServerLogReceivedEvent = new EventMetric < ServerLogEvent > ( NetworkMetricTypes . ServerLogReceived . Id ) ;
3838 readonly EventMetric < SceneEventMetric > m_SceneEventSentEvent = new EventMetric < SceneEventMetric > ( NetworkMetricTypes . SceneEventSent . Id ) ;
3939 readonly EventMetric < SceneEventMetric > m_SceneEventReceivedEvent = new EventMetric < SceneEventMetric > ( NetworkMetricTypes . SceneEventReceived . Id ) ;
40+ private bool m_Dirty ;
4041
4142 readonly Dictionary < ulong , NetworkObjectIdentifier > m_NetworkGameObjects = new Dictionary < ulong , NetworkObjectIdentifier > ( ) ;
4243
@@ -87,16 +88,19 @@ public void TrackNetworkObject(NetworkObject networkObject)
8788 public void TrackNetworkMessageSent ( ulong receivedClientId , string messageType , long bytesCount )
8889 {
8990 m_NetworkMessageSentEvent . Mark ( new NetworkMessageEvent ( new ConnectionInfo ( receivedClientId ) , messageType , bytesCount ) ) ;
91+ MarkDirty ( ) ;
9092 }
9193
9294 public void TrackNetworkMessageReceived ( ulong senderClientId , string messageType , long bytesCount )
9395 {
9496 m_NetworkMessageReceivedEvent . Mark ( new NetworkMessageEvent ( new ConnectionInfo ( senderClientId ) , messageType , bytesCount ) ) ;
97+ MarkDirty ( ) ;
9598 }
9699
97100 public void TrackNamedMessageSent ( ulong receiverClientId , string messageName , long bytesCount )
98101 {
99102 m_NamedMessageSentEvent . Mark ( new NamedMessageEvent ( new ConnectionInfo ( receiverClientId ) , messageName , bytesCount ) ) ;
103+ MarkDirty ( ) ;
100104 }
101105
102106 public void TrackNamedMessageSent ( IReadOnlyCollection < ulong > receiverClientIds , string messageName , long bytesCount )
@@ -110,11 +114,13 @@ public void TrackNamedMessageSent(IReadOnlyCollection<ulong> receiverClientIds,
110114 public void TrackNamedMessageReceived ( ulong senderClientId , string messageName , long bytesCount )
111115 {
112116 m_NamedMessageReceivedEvent . Mark ( new NamedMessageEvent ( new ConnectionInfo ( senderClientId ) , messageName , bytesCount ) ) ;
117+ MarkDirty ( ) ;
113118 }
114119
115120 public void TrackUnnamedMessageSent ( ulong receiverClientId , long bytesCount )
116121 {
117122 m_UnnamedMessageSentEvent . Mark ( new UnnamedMessageEvent ( new ConnectionInfo ( receiverClientId ) , bytesCount ) ) ;
123+ MarkDirty ( ) ;
118124 }
119125
120126 public void TrackUnnamedMessageSent ( IReadOnlyCollection < ulong > receiverClientIds , long bytesCount )
@@ -128,6 +134,7 @@ public void TrackUnnamedMessageSent(IReadOnlyCollection<ulong> receiverClientIds
128134 public void TrackUnnamedMessageReceived ( ulong senderClientId , long bytesCount )
129135 {
130136 m_UnnamedMessageReceivedEvent . Mark ( new UnnamedMessageEvent ( new ConnectionInfo ( senderClientId ) , bytesCount ) ) ;
137+ MarkDirty ( ) ;
131138 }
132139
133140 public void TrackNetworkVariableDeltaSent (
@@ -145,6 +152,7 @@ public void TrackNetworkVariableDeltaSent(
145152 variableName ,
146153 networkBehaviourName ,
147154 bytesCount ) ) ;
155+ MarkDirty ( ) ;
148156 }
149157
150158 public void TrackNetworkVariableDeltaReceived (
@@ -162,37 +170,44 @@ public void TrackNetworkVariableDeltaReceived(
162170 variableName ,
163171 networkBehaviourName ,
164172 bytesCount ) ) ;
173+ MarkDirty ( ) ;
165174 }
166175
167176 public void TrackOwnershipChangeSent ( ulong receiverClientId , ulong networkObjectId , string gameObjectName , long bytesCount )
168177 {
169178 m_OwnershipChangeSentEvent . Mark ( new OwnershipChangeEvent ( new ConnectionInfo ( receiverClientId ) , new NetworkObjectIdentifier ( gameObjectName , networkObjectId ) , bytesCount ) ) ;
179+ MarkDirty ( ) ;
170180 }
171181
172182 public void TrackOwnershipChangeReceived ( ulong senderClientId , ulong networkObjectId , string gameObjectName , long bytesCount )
173183 {
174184 m_OwnershipChangeReceivedEvent . Mark ( new OwnershipChangeEvent ( new ConnectionInfo ( senderClientId ) ,
175185 new NetworkObjectIdentifier ( gameObjectName , networkObjectId ) , bytesCount ) ) ;
186+ MarkDirty ( ) ;
176187 }
177188
178189 public void TrackObjectSpawnSent ( ulong receiverClientId , ulong networkObjectId , string gameObjectName , long bytesCount )
179190 {
180191 m_ObjectSpawnSentEvent . Mark ( new ObjectSpawnedEvent ( new ConnectionInfo ( receiverClientId ) , new NetworkObjectIdentifier ( gameObjectName , networkObjectId ) , bytesCount ) ) ;
192+ MarkDirty ( ) ;
181193 }
182194
183195 public void TrackObjectSpawnReceived ( ulong senderClientId , ulong networkObjectId , string gameObjectName , long bytesCount )
184196 {
185197 m_ObjectSpawnReceivedEvent . Mark ( new ObjectSpawnedEvent ( new ConnectionInfo ( senderClientId ) , new NetworkObjectIdentifier ( gameObjectName , networkObjectId ) , bytesCount ) ) ;
198+ MarkDirty ( ) ;
186199 }
187200
188201 public void TrackObjectDestroySent ( ulong receiverClientId , ulong networkObjectId , string gameObjectName , long bytesCount )
189202 {
190203 m_ObjectDestroySentEvent . Mark ( new ObjectDestroyedEvent ( new ConnectionInfo ( receiverClientId ) , new NetworkObjectIdentifier ( gameObjectName , networkObjectId ) , bytesCount ) ) ;
204+ MarkDirty ( ) ;
191205 }
192206
193207 public void TrackObjectDestroyReceived ( ulong senderClientId , ulong networkObjectId , string gameObjectName , long bytesCount )
194208 {
195209 m_ObjectDestroyReceivedEvent . Mark ( new ObjectDestroyedEvent ( new ConnectionInfo ( senderClientId ) , new NetworkObjectIdentifier ( gameObjectName , networkObjectId ) , bytesCount ) ) ;
210+ MarkDirty ( ) ;
196211 }
197212
198213 public void TrackRpcSent (
@@ -214,6 +229,7 @@ public void TrackRpcSent(
214229 rpcName ,
215230 networkBehaviourName ,
216231 bytesCount ) ) ;
232+ MarkDirty ( ) ;
217233 }
218234
219235 public void TrackRpcSent (
@@ -247,16 +263,19 @@ public void TrackRpcReceived(
247263 rpcName ,
248264 networkBehaviourName ,
249265 bytesCount ) ) ;
266+ MarkDirty ( ) ;
250267 }
251268
252269 public void TrackServerLogSent ( ulong receiverClientId , uint logType , long bytesCount )
253270 {
254271 m_ServerLogSentEvent . Mark ( new ServerLogEvent ( new ConnectionInfo ( receiverClientId ) , ( Unity . Multiplayer . Tools . MetricTypes . LogLevel ) logType , bytesCount ) ) ;
272+ MarkDirty ( ) ;
255273 }
256274
257275 public void TrackServerLogReceived ( ulong senderClientId , uint logType , long bytesCount )
258276 {
259277 m_ServerLogReceivedEvent . Mark ( new ServerLogEvent ( new ConnectionInfo ( senderClientId ) , ( Unity . Multiplayer . Tools . MetricTypes . LogLevel ) logType , bytesCount ) ) ;
278+ MarkDirty ( ) ;
260279 }
261280
262281 public void TrackSceneEventSent ( IReadOnlyList < ulong > receiverClientIds , uint sceneEventType , string sceneName , long bytesCount )
@@ -270,16 +289,27 @@ public void TrackSceneEventSent(IReadOnlyList<ulong> receiverClientIds, uint sce
270289 public void TrackSceneEventSent ( ulong receiverClientId , uint sceneEventType , string sceneName , long bytesCount )
271290 {
272291 m_SceneEventSentEvent . Mark ( new SceneEventMetric ( new ConnectionInfo ( receiverClientId ) , ( SceneEventType ) sceneEventType , sceneName , bytesCount ) ) ;
292+ MarkDirty ( ) ;
273293 }
274294
275295 public void TrackSceneEventReceived ( ulong senderClientId , uint sceneEventType , string sceneName , long bytesCount )
276296 {
277297 m_SceneEventReceivedEvent . Mark ( new SceneEventMetric ( new ConnectionInfo ( senderClientId ) , ( SceneEventType ) sceneEventType , sceneName , bytesCount ) ) ;
298+ MarkDirty ( ) ;
278299 }
279300
280301 public void DispatchFrame ( )
281302 {
282- Dispatcher . Dispatch ( ) ;
303+ if ( m_Dirty )
304+ {
305+ Dispatcher . Dispatch ( ) ;
306+ m_Dirty = false ;
307+ }
308+ }
309+
310+ private void MarkDirty ( )
311+ {
312+ m_Dirty = true ;
283313 }
284314 }
285315
0 commit comments