@@ -121,6 +121,14 @@ private void OnValidate()
121
121
if ( NetworkConfig == null )
122
122
return ; //May occur when the component is added
123
123
124
+ //Sort lists
125
+ if ( NetworkConfig . MessageTypes != null )
126
+ NetworkConfig . MessageTypes = NetworkConfig . MessageTypes . OrderBy ( x => x . Name ) . ToList ( ) ;
127
+ if ( NetworkConfig . Channels != null )
128
+ NetworkConfig . Channels = NetworkConfig . Channels . OrderBy ( x => x . Name ) . ToList ( ) ;
129
+ if ( NetworkConfig . NetworkedPrefabs != null )
130
+ NetworkConfig . NetworkedPrefabs = NetworkConfig . NetworkedPrefabs . OrderBy ( x => x . name ) . ToList ( ) ;
131
+
124
132
if ( NetworkConfig . EnableSceneSwitching && ! NetworkConfig . RegisteredScenes . Contains ( SceneManager . GetActiveScene ( ) . name ) )
125
133
{
126
134
if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "The active scene is not registered as a networked scene. The MLAPI has added it" ) ;
@@ -216,11 +224,11 @@ private object Init(bool server)
216
224
217
225
object settings = NetworkConfig . NetworkTransport . GetSettings ( ) ; //Gets a new "settings" object for the transport currently used.
218
226
219
- if ( NetworkConfig . HandleObjectSpawning )
227
+ if ( NetworkConfig . HandleObjectSpawning )
220
228
{
221
229
NetworkConfig . NetworkPrefabIds = new Dictionary < string , int > ( ) ;
222
230
NetworkConfig . NetworkPrefabNames = new Dictionary < int , string > ( ) ;
223
- NetworkConfig . NetworkedPrefabs . OrderBy ( x => x . name ) ;
231
+ NetworkConfig . NetworkedPrefabs = NetworkConfig . NetworkedPrefabs . OrderBy ( x => x . name ) . ToList ( ) ;
224
232
HashSet < string > networkedPrefabName = new HashSet < string > ( ) ;
225
233
for ( int i = 0 ; i < NetworkConfig . NetworkedPrefabs . Count ; i ++ )
226
234
{
@@ -304,6 +312,34 @@ private object Init(bool server)
304
312
MessageManager . reverseChannels . Add ( channelId , internalChannels [ i ] . Name ) ;
305
313
}
306
314
315
+ if ( NetworkConfig . EnableSceneSwitching )
316
+ {
317
+ for ( int i = 0 ; i < NetworkConfig . RegisteredScenes . Count ; i ++ )
318
+ {
319
+ NetworkSceneManager . registeredSceneNames . Add ( NetworkConfig . RegisteredScenes [ i ] ) ;
320
+ NetworkSceneManager . sceneIndexToString . Add ( ( uint ) i , NetworkConfig . RegisteredScenes [ i ] ) ;
321
+ NetworkSceneManager . sceneNameToIndex . Add ( NetworkConfig . RegisteredScenes [ i ] , ( uint ) i ) ;
322
+ }
323
+
324
+ NetworkSceneManager . SetCurrentSceneIndex ( ) ;
325
+ }
326
+
327
+ //Register user channels
328
+ NetworkConfig . Channels = NetworkConfig . Channels . OrderBy ( x => x . Name ) . ToList ( ) ;
329
+ for ( int i = 0 ; i < NetworkConfig . Channels . Count ; i ++ )
330
+ {
331
+ if ( channelNames . Contains ( NetworkConfig . Channels [ i ] . Name ) )
332
+ {
333
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Duplicate channel name: " + NetworkConfig . Channels [ i ] . Name ) ;
334
+ continue ;
335
+ }
336
+ int channelId = NetworkConfig . NetworkTransport . AddChannel ( NetworkConfig . Channels [ i ] . Type , settings ) ;
337
+ MessageManager . channels . Add ( NetworkConfig . Channels [ i ] . Name , channelId ) ;
338
+ channelNames . Add ( NetworkConfig . Channels [ i ] . Name ) ;
339
+ MessageManager . reverseChannels . Add ( channelId , NetworkConfig . Channels [ i ] . Name ) ;
340
+ }
341
+
342
+ //Add internal messagetypes directly
307
343
MessageManager . messageTypes . Add ( "MLAPI_CONNECTION_REQUEST" , 0 ) ;
308
344
MessageManager . messageTypes . Add ( "MLAPI_CONNECTION_APPROVED" , 1 ) ;
309
345
MessageManager . messageTypes . Add ( "MLAPI_ADD_OBJECT" , 2 ) ;
@@ -321,6 +357,7 @@ private object Init(bool server)
321
357
MessageManager . messageTypes . Add ( "MLAPI_TARGET" , 14 ) ;
322
358
MessageManager . messageTypes . Add ( "MLAPI_SET_VISIBILITY" , 15 ) ;
323
359
360
+ //These are message types concidered to be user level since they belong to prototype components
324
361
List < MessageType > messageTypes = new List < MessageType > ( NetworkConfig . MessageTypes )
325
362
{
326
363
new MessageType ( )
@@ -360,33 +397,10 @@ private object Init(bool server)
360
397
}
361
398
} ;
362
399
363
- if ( NetworkConfig . EnableSceneSwitching )
364
- {
365
- for ( int i = 0 ; i < NetworkConfig . RegisteredScenes . Count ; i ++ )
366
- {
367
- NetworkSceneManager . registeredSceneNames . Add ( NetworkConfig . RegisteredScenes [ i ] ) ;
368
- NetworkSceneManager . sceneIndexToString . Add ( ( uint ) i , NetworkConfig . RegisteredScenes [ i ] ) ;
369
- NetworkSceneManager . sceneNameToIndex . Add ( NetworkConfig . RegisteredScenes [ i ] , ( uint ) i ) ;
370
- }
371
-
372
- NetworkSceneManager . SetCurrentSceneIndex ( ) ;
373
- }
374
-
375
- //Register user channels
376
- for ( int i = 0 ; i < NetworkConfig . Channels . Count ; i ++ )
377
- {
378
- if ( channelNames . Contains ( NetworkConfig . Channels [ i ] . Name ) )
379
- {
380
- if ( LogHelper . CurrentLogLevel <= LogLevel . Normal ) LogHelper . LogWarning ( "Duplicate channel name: " + NetworkConfig . Channels [ i ] . Name ) ;
381
- continue ;
382
- }
383
- int channelId = NetworkConfig . NetworkTransport . AddChannel ( NetworkConfig . Channels [ i ] . Type , settings ) ;
384
- MessageManager . channels . Add ( NetworkConfig . Channels [ i ] . Name , channelId ) ;
385
- channelNames . Add ( NetworkConfig . Channels [ i ] . Name ) ;
386
- MessageManager . reverseChannels . Add ( channelId , NetworkConfig . Channels [ i ] . Name ) ;
387
- }
400
+ //Sort user messages
401
+ messageTypes = messageTypes . OrderBy ( x => x . Name ) . ToList ( ) ;
388
402
389
- //0-32 are reserved for MLAPI messages
403
+ //0-32 are reserved for MLAPI messages
390
404
ushort messageId = 32 ;
391
405
for ( ushort i = 0 ; i < messageTypes . Count ; i ++ )
392
406
{
0 commit comments