@@ -121,6 +121,14 @@ private void OnValidate()
121121 if ( NetworkConfig == null )
122122 return ; //May occur when the component is added
123123
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+
124132 if ( NetworkConfig . EnableSceneSwitching && ! NetworkConfig . RegisteredScenes . Contains ( SceneManager . GetActiveScene ( ) . name ) )
125133 {
126134 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)
216224
217225 object settings = NetworkConfig . NetworkTransport . GetSettings ( ) ; //Gets a new "settings" object for the transport currently used.
218226
219- if ( NetworkConfig . HandleObjectSpawning )
227+ if ( NetworkConfig . HandleObjectSpawning )
220228 {
221229 NetworkConfig . NetworkPrefabIds = new Dictionary < string , int > ( ) ;
222230 NetworkConfig . NetworkPrefabNames = new Dictionary < int , string > ( ) ;
223- NetworkConfig . NetworkedPrefabs . OrderBy ( x => x . name ) ;
231+ NetworkConfig . NetworkedPrefabs = NetworkConfig . NetworkedPrefabs . OrderBy ( x => x . name ) . ToList ( ) ;
224232 HashSet < string > networkedPrefabName = new HashSet < string > ( ) ;
225233 for ( int i = 0 ; i < NetworkConfig . NetworkedPrefabs . Count ; i ++ )
226234 {
@@ -304,6 +312,34 @@ private object Init(bool server)
304312 MessageManager . reverseChannels . Add ( channelId , internalChannels [ i ] . Name ) ;
305313 }
306314
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
307343 MessageManager . messageTypes . Add ( "MLAPI_CONNECTION_REQUEST" , 0 ) ;
308344 MessageManager . messageTypes . Add ( "MLAPI_CONNECTION_APPROVED" , 1 ) ;
309345 MessageManager . messageTypes . Add ( "MLAPI_ADD_OBJECT" , 2 ) ;
@@ -321,6 +357,7 @@ private object Init(bool server)
321357 MessageManager . messageTypes . Add ( "MLAPI_TARGET" , 14 ) ;
322358 MessageManager . messageTypes . Add ( "MLAPI_SET_VISIBILITY" , 15 ) ;
323359
360+ //These are message types concidered to be user level since they belong to prototype components
324361 List < MessageType > messageTypes = new List < MessageType > ( NetworkConfig . MessageTypes )
325362 {
326363 new MessageType ( )
@@ -360,33 +397,10 @@ private object Init(bool server)
360397 }
361398 } ;
362399
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 ( ) ;
388402
389- //0-32 are reserved for MLAPI messages
403+ //0-32 are reserved for MLAPI messages
390404 ushort messageId = 32 ;
391405 for ( ushort i = 0 ; i < messageTypes . Count ; i ++ )
392406 {
0 commit comments