@@ -301,76 +301,80 @@ private void Update()
301301 {
302302 if ( isListening )
303303 {
304- if ( Time . time - lastSendTickTime >= ( 1f / NetworkConfig . SendTickrate ) )
304+ if ( ( Time . time - lastSendTickTime >= ( 1f / NetworkConfig . SendTickrate ) ) || NetworkConfig . SendTickrate <= 0 )
305305 {
306306 foreach ( KeyValuePair < int , NetworkedClient > pair in connectedClients )
307307 {
308308 NetworkTransport . SendQueuedMessages ( hostId , pair . Key , out error ) ;
309309 }
310310 lastSendTickTime = Time . time ;
311311 }
312- if ( Time . time - lastReceiveTickTime >= ( 1f / NetworkConfig . ReceiveTickrate ) )
312+ if ( ( Time . time - lastReceiveTickTime >= ( 1f / NetworkConfig . ReceiveTickrate ) ) || NetworkConfig . ReceiveTickrate <= 0 )
313313 {
314- NetworkEventType eventType = NetworkTransport . Receive ( out hostId , out clientId , out channelId , messageBuffer , messageBuffer . Length , out receivedSize , out error ) ;
315- NetworkError networkError = ( NetworkError ) error ;
316- if ( networkError == NetworkError . Timeout )
314+ NetworkEventType eventType ;
315+ do
317316 {
318- //Client timed out.
319- if ( isServer )
317+ eventType = NetworkTransport . Receive ( out hostId , out clientId , out channelId , messageBuffer , messageBuffer . Length , out receivedSize , out error ) ;
318+ NetworkError networkError = ( NetworkError ) error ;
319+ if ( networkError == NetworkError . Timeout )
320320 {
321- OnClientDisconnect ( clientId ) ;
322- return ;
323- }
324- }
325- else if ( networkError != NetworkError . Ok )
326- {
327- Debug . LogWarning ( "MLAPI: NetworkTransport receive error: " + networkError . ToString ( ) ) ;
328- return ;
329- }
330-
331- switch ( eventType )
332- {
333- case NetworkEventType . ConnectEvent :
321+ //Client timed out.
334322 if ( isServer )
335323 {
336- pendingClients . Add ( clientId ) ;
337- StartCoroutine ( ApprovalTimeout ( clientId ) ) ;
324+ OnClientDisconnect ( clientId ) ;
325+ return ;
338326 }
339- else
340- {
341- int sizeOfStream = 32 ;
342- if ( NetworkConfig . ConnectionApproval )
343- sizeOfStream += 2 + NetworkConfig . ConnectionData . Length ;
327+ }
328+ else if ( networkError != NetworkError . Ok )
329+ {
330+ Debug . LogWarning ( "MLAPI: NetworkTransport receive error: " + networkError . ToString ( ) ) ;
331+ return ;
332+ }
344333
345- using ( MemoryStream writeStream = new MemoryStream ( sizeOfStream ) )
334+ switch ( eventType )
335+ {
336+ case NetworkEventType . ConnectEvent :
337+ if ( isServer )
346338 {
347- using ( BinaryWriter writer = new BinaryWriter ( writeStream ) )
339+ pendingClients . Add ( clientId ) ;
340+ StartCoroutine ( ApprovalTimeout ( clientId ) ) ;
341+ }
342+ else
343+ {
344+ int sizeOfStream = 32 ;
345+ if ( NetworkConfig . ConnectionApproval )
346+ sizeOfStream += 2 + NetworkConfig . ConnectionData . Length ;
347+
348+ using ( MemoryStream writeStream = new MemoryStream ( sizeOfStream ) )
348349 {
349- writer . Write ( NetworkConfig . GetConfig ( ) ) ;
350- if ( NetworkConfig . ConnectionApproval )
350+ using ( BinaryWriter writer = new BinaryWriter ( writeStream ) )
351351 {
352- writer . Write ( ( ushort ) NetworkConfig . ConnectionData . Length ) ;
353- writer . Write ( NetworkConfig . ConnectionData ) ;
352+ writer . Write ( NetworkConfig . GetConfig ( ) ) ;
353+ if ( NetworkConfig . ConnectionApproval )
354+ {
355+ writer . Write ( ( ushort ) NetworkConfig . ConnectionData . Length ) ;
356+ writer . Write ( NetworkConfig . ConnectionData ) ;
357+ }
354358 }
359+ Send ( clientId , "MLAPI_CONNECTION_REQUEST" , "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED" , writeStream . GetBuffer ( ) ) ;
355360 }
356- Send ( clientId , "MLAPI_CONNECTION_REQUEST" , "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED" , writeStream . GetBuffer ( ) ) ;
357361 }
358- }
359- break ;
360- case NetworkEventType . DataEvent :
361- HandleIncomingData ( clientId , messageBuffer , channelId ) ;
362- break ;
363- case NetworkEventType . DisconnectEvent :
364- if ( isServer )
365- OnClientDisconnect ( clientId ) ;
366- break ;
367- }
362+ break ;
363+ case NetworkEventType . DataEvent :
364+ HandleIncomingData ( clientId , messageBuffer , channelId ) ;
365+ break ;
366+ case NetworkEventType . DisconnectEvent :
367+ if ( isServer )
368+ OnClientDisconnect ( clientId ) ;
369+ break ;
370+ }
371+ } while ( eventType != NetworkEventType . Nothing ) ;
368372 lastReceiveTickTime = Time . time ;
369373 }
370- if ( isServer && ( Time . time - lastEventTickTime >= ( 1f / NetworkConfig . EventTickrate ) ) )
374+ if ( isServer && ( ( Time . time - lastEventTickTime >= ( 1f / NetworkConfig . EventTickrate ) ) || NetworkConfig . EventTickrate <= 0 ) )
371375 {
372376 LagCompensationManager . AddFrames ( ) ;
373- NetworkedObject . InvokeSyncvafrUpdate ( ) ;
377+ NetworkedObject . InvokeSyncvarUpdate ( ) ;
374378 lastEventTickTime = Time . time ;
375379 }
376380 }
0 commit comments