@@ -71,6 +71,9 @@ private ConnectionConfig Init(NetworkingConfiguration netConfig)
7171 MessageManager . reverseMessageTypes = new Dictionary < ushort , string > ( ) ;
7272 SpawnManager . spawnedObjects = new Dictionary < uint , NetworkedObject > ( ) ;
7373 SpawnManager . releasedNetworkObjectIds = new Stack < uint > ( ) ;
74+ NetworkSceneManager . registeredSceneNames = new HashSet < string > ( ) ;
75+ NetworkSceneManager . sceneIndexToString = new Dictionary < uint , string > ( ) ;
76+ NetworkSceneManager . sceneNameToIndex = new Dictionary < string , uint > ( ) ;
7477 if ( NetworkConfig . HandleObjectSpawning )
7578 {
7679 NetworkedObject [ ] sceneObjects = FindObjectsOfType < NetworkedObject > ( ) ;
@@ -87,14 +90,24 @@ private ConnectionConfig Init(NetworkingConfiguration netConfig)
8790 //MLAPI channels and messageTypes
8891 NetworkConfig . Channels . Add ( "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED" , QosType . ReliableFragmentedSequenced ) ;
8992 NetworkConfig . Channels . Add ( "MLAPI_POSITION_UPDATE" , QosType . StateUpdate ) ;
93+ NetworkConfig . Channels . Add ( "MLAPI_SCENE_SWTICH" , QosType . AllCostDelivery ) ;
9094 MessageManager . messageTypes . Add ( "MLAPI_CONNECTION_REQUEST" , 0 ) ;
9195 MessageManager . messageTypes . Add ( "MLAPI_CONNECTION_APPROVED" , 1 ) ;
9296 MessageManager . messageTypes . Add ( "MLAPI_ADD_OBJECT" , 2 ) ;
9397 MessageManager . messageTypes . Add ( "MLAPI_CLIENT_DISCONNECT" , 3 ) ;
9498 MessageManager . messageTypes . Add ( "MLAPI_DESTROY_OBJECT" , 4 ) ;
99+ MessageManager . messageTypes . Add ( "MLAPI_SWITCH_SCENE" , 5 ) ;
95100 NetworkConfig . MessageTypes . Add ( "MLAPI_OnRecieveTransformFromClient" ) ;
96101 NetworkConfig . MessageTypes . Add ( "MLAPI_OnRecieveTransformFromServer" ) ;
97102
103+ for ( int i = 0 ; i < NetworkConfig . RegisteredScenes . Count ; i ++ )
104+ {
105+ NetworkSceneManager . registeredSceneNames . Add ( NetworkConfig . RegisteredScenes [ i ] ) ;
106+ NetworkSceneManager . sceneIndexToString . Add ( ( uint ) i , NetworkConfig . RegisteredScenes [ i ] ) ;
107+ NetworkSceneManager . sceneNameToIndex . Add ( NetworkConfig . RegisteredScenes [ i ] , ( uint ) i ) ;
108+ }
109+
110+
98111 HashSet < string > channelNames = new HashSet < string > ( ) ;
99112 foreach ( KeyValuePair < string , QosType > pair in NetworkConfig . Channels )
100113 {
@@ -549,6 +562,19 @@ private void HandleIncomingData(int clientId, byte[] data, int channelId)
549562 }
550563 }
551564 break ;
565+ case 5 :
566+ //Scene switch
567+ if ( isClient )
568+ {
569+ using ( MemoryStream messageReadStream = new MemoryStream ( incommingData ) )
570+ {
571+ using ( BinaryReader messageReader = new BinaryReader ( messageReadStream ) )
572+ {
573+ NetworkSceneManager . OnSceneSwitch ( messageReader . ReadUInt32 ( ) ) ;
574+ }
575+ }
576+ }
577+ break ;
552578 }
553579 }
554580 }
0 commit comments