@@ -162,49 +162,51 @@ public string ToBase64()
162162 NetworkConfig config = this ;
163163 using ( PooledBitStream stream = PooledBitStream . Get ( ) )
164164 {
165- BitWriter writer = new BitWriter ( stream ) ;
166- writer . WriteUInt16Packed ( config . ProtocolVersion ) ;
167- writer . WriteBits ( ( byte ) config . Transport , 5 ) ;
168-
169- writer . WriteUInt16Packed ( ( ushort ) config . Channels . Count ) ;
170- for ( int i = 0 ; i < config . Channels . Count ; i ++ )
165+ using ( PooledBitWriter writer = PooledBitWriter . Get ( stream ) )
171166 {
172- writer . WriteString ( config . Channels [ i ] . Name ) ;
173- writer . WriteBits ( ( byte ) config . Channels [ i ] . Type , 5 ) ;
174- }
167+ writer . WriteUInt16Packed ( config . ProtocolVersion ) ;
168+ writer . WriteBits ( ( byte ) config . Transport , 5 ) ;
175169
176- writer . WriteUInt16Packed ( ( ushort ) config . RegisteredScenes . Count ) ;
177- for ( int i = 0 ; i < config . RegisteredScenes . Count ; i ++ )
178- {
179- writer . WriteString ( config . RegisteredScenes [ i ] ) ;
180- }
170+ writer . WriteUInt16Packed ( ( ushort ) config . Channels . Count ) ;
171+ for ( int i = 0 ; i < config . Channels . Count ; i ++ )
172+ {
173+ writer . WriteString ( config . Channels [ i ] . Name ) ;
174+ writer . WriteBits ( ( byte ) config . Channels [ i ] . Type , 5 ) ;
175+ }
181176
182- writer . WriteUInt16Packed ( ( ushort ) config . NetworkedPrefabs . Count ) ;
183- for ( int i = 0 ; i < config . NetworkedPrefabs . Count ; i ++ )
184- {
185- writer . WriteBool ( config . NetworkedPrefabs [ i ] . playerPrefab ) ;
186- writer . WriteString ( config . NetworkedPrefabs [ i ] . name ) ;
187- }
177+ writer . WriteUInt16Packed ( ( ushort ) config . RegisteredScenes . Count ) ;
178+ for ( int i = 0 ; i < config . RegisteredScenes . Count ; i ++ )
179+ {
180+ writer . WriteString ( config . RegisteredScenes [ i ] ) ;
181+ }
188182
189- writer . WriteInt32Packed ( config . MessageBufferSize ) ;
190- writer . WriteInt32Packed ( config . ReceiveTickrate ) ;
191- writer . WriteInt32Packed ( config . MaxReceiveEventsPerTickRate ) ;
192- writer . WriteInt32Packed ( config . SendTickrate ) ;
193- writer . WriteInt32Packed ( config . EventTickrate ) ;
194- writer . WriteInt32Packed ( config . MaxConnections ) ;
195- writer . WriteInt32Packed ( config . ConnectPort ) ;
196- writer . WriteString ( config . ConnectAddress ) ;
197- writer . WriteInt32Packed ( config . ClientConnectionBufferTimeout ) ;
198- writer . WriteBool ( config . ConnectionApproval ) ;
199- writer . WriteInt32Packed ( config . SecondsHistory ) ;
200- writer . WriteBool ( config . HandleObjectSpawning ) ;
201- writer . WriteBool ( config . EnableEncryption ) ;
202- writer . WriteBool ( config . SignKeyExchange ) ;
203- writer . WriteBool ( config . EnableSceneSwitching ) ;
204- writer . WriteBool ( config . EnableTimeResync ) ;
205- writer . WriteBits ( ( byte ) config . AttributeMessageMode , 3 ) ;
183+ writer . WriteUInt16Packed ( ( ushort ) config . NetworkedPrefabs . Count ) ;
184+ for ( int i = 0 ; i < config . NetworkedPrefabs . Count ; i ++ )
185+ {
186+ writer . WriteBool ( config . NetworkedPrefabs [ i ] . playerPrefab ) ;
187+ writer . WriteString ( config . NetworkedPrefabs [ i ] . name ) ;
188+ }
189+
190+ writer . WriteInt32Packed ( config . MessageBufferSize ) ;
191+ writer . WriteInt32Packed ( config . ReceiveTickrate ) ;
192+ writer . WriteInt32Packed ( config . MaxReceiveEventsPerTickRate ) ;
193+ writer . WriteInt32Packed ( config . SendTickrate ) ;
194+ writer . WriteInt32Packed ( config . EventTickrate ) ;
195+ writer . WriteInt32Packed ( config . MaxConnections ) ;
196+ writer . WriteInt32Packed ( config . ConnectPort ) ;
197+ writer . WriteString ( config . ConnectAddress ) ;
198+ writer . WriteInt32Packed ( config . ClientConnectionBufferTimeout ) ;
199+ writer . WriteBool ( config . ConnectionApproval ) ;
200+ writer . WriteInt32Packed ( config . SecondsHistory ) ;
201+ writer . WriteBool ( config . HandleObjectSpawning ) ;
202+ writer . WriteBool ( config . EnableEncryption ) ;
203+ writer . WriteBool ( config . SignKeyExchange ) ;
204+ writer . WriteBool ( config . EnableSceneSwitching ) ;
205+ writer . WriteBool ( config . EnableTimeResync ) ;
206+ writer . WriteBits ( ( byte ) config . AttributeMessageMode , 3 ) ;
206207
207- return Convert . ToBase64String ( stream . ToArray ( ) ) ;
208+ return Convert . ToBase64String ( stream . ToArray ( ) ) ;
209+ }
208210 }
209211 }
210212
@@ -219,68 +221,70 @@ public void FromBase64(string base64, bool createDummyObject = false)
219221 byte [ ] binary = Convert . FromBase64String ( base64 ) ;
220222 using ( BitStream stream = new BitStream ( binary ) )
221223 {
222- BitReader reader = new BitReader ( stream ) ;
223-
224- config . ProtocolVersion = reader . ReadUInt16Packed ( ) ;
225- config . Transport = ( DefaultTransport ) reader . ReadBits ( 5 ) ;
226-
227- ushort channelCount = reader . ReadUInt16Packed ( ) ;
228- config . Channels . Clear ( ) ;
229- for ( int i = 0 ; i < channelCount ; i ++ )
224+ using ( PooledBitReader reader = PooledBitReader . Get ( stream ) )
230225 {
231- Channel channel = new Channel ( )
232- {
233- Name = reader . ReadString ( ) . ToString ( ) ,
234- Type = ( ChannelType ) reader . ReadBits ( 5 )
235- } ;
236- config . Channels . Add ( channel ) ;
237- }
238226
239- ushort sceneCount = reader . ReadUInt16Packed ( ) ;
240- config . RegisteredScenes . Clear ( ) ;
241- for ( int i = 0 ; i < sceneCount ; i ++ )
242- {
243- config . RegisteredScenes . Add ( reader . ReadString ( ) . ToString ( ) ) ;
244- }
227+ config . ProtocolVersion = reader . ReadUInt16Packed ( ) ;
228+ config . Transport = ( DefaultTransport ) reader . ReadBits ( 5 ) ;
245229
246- ushort networkedPrefabsCount = reader . ReadUInt16Packed ( ) ;
247- config . NetworkedPrefabs . Clear ( ) ;
248- GameObject root = createDummyObject ? new GameObject ( "MLAPI: Dummy prefabs" ) : null ;
249- for ( int i = 0 ; i < networkedPrefabsCount ; i ++ )
250- {
251- bool playerPrefab = reader . ReadBool ( ) ;
252- string prefabName = reader . ReadString ( ) . ToString ( ) ;
253- GameObject dummyPrefab = createDummyObject ? new GameObject ( "REPLACEME: " + prefabName + "(Dummy prefab)" , typeof ( NetworkedObject ) ) : null ;
254- if ( dummyPrefab != null )
230+ ushort channelCount = reader . ReadUInt16Packed ( ) ;
231+ config . Channels . Clear ( ) ;
232+ for ( int i = 0 ; i < channelCount ; i ++ )
255233 {
256- dummyPrefab . GetComponent < NetworkedObject > ( ) . NetworkedPrefabName = prefabName ;
257- dummyPrefab . transform . SetParent ( root . transform ) ; //This is just here to not ruin your hierarchy
234+ Channel channel = new Channel ( )
235+ {
236+ Name = reader . ReadString ( ) . ToString ( ) ,
237+ Type = ( ChannelType ) reader . ReadBits ( 5 )
238+ } ;
239+ config . Channels . Add ( channel ) ;
258240 }
259- NetworkedPrefab networkedPrefab = new NetworkedPrefab ( )
241+
242+ ushort sceneCount = reader . ReadUInt16Packed ( ) ;
243+ config . RegisteredScenes . Clear ( ) ;
244+ for ( int i = 0 ; i < sceneCount ; i ++ )
260245 {
261- playerPrefab = playerPrefab ,
262- prefab = dummyPrefab
263- } ;
264- config . NetworkedPrefabs . Add ( networkedPrefab ) ;
265- }
246+ config . RegisteredScenes . Add ( reader . ReadString ( ) . ToString ( ) ) ;
247+ }
248+
249+ ushort networkedPrefabsCount = reader . ReadUInt16Packed ( ) ;
250+ config . NetworkedPrefabs . Clear ( ) ;
251+ GameObject root = createDummyObject ? new GameObject ( "MLAPI: Dummy prefabs" ) : null ;
252+ for ( int i = 0 ; i < networkedPrefabsCount ; i ++ )
253+ {
254+ bool playerPrefab = reader . ReadBool ( ) ;
255+ string prefabName = reader . ReadString ( ) . ToString ( ) ;
256+ GameObject dummyPrefab = createDummyObject ? new GameObject ( "REPLACEME: " + prefabName + "(Dummy prefab)" , typeof ( NetworkedObject ) ) : null ;
257+ if ( dummyPrefab != null )
258+ {
259+ dummyPrefab . GetComponent < NetworkedObject > ( ) . NetworkedPrefabName = prefabName ;
260+ dummyPrefab . transform . SetParent ( root . transform ) ; //This is just here to not ruin your hierarchy
261+ }
262+ NetworkedPrefab networkedPrefab = new NetworkedPrefab ( )
263+ {
264+ playerPrefab = playerPrefab ,
265+ prefab = dummyPrefab
266+ } ;
267+ config . NetworkedPrefabs . Add ( networkedPrefab ) ;
268+ }
266269
267- config . MessageBufferSize = reader . ReadInt32Packed ( ) ;
268- config . ReceiveTickrate = reader . ReadInt32Packed ( ) ;
269- config . MaxReceiveEventsPerTickRate = reader . ReadInt32Packed ( ) ;
270- config . SendTickrate = reader . ReadInt32Packed ( ) ;
271- config . EventTickrate = reader . ReadInt32Packed ( ) ;
272- config . MaxConnections = reader . ReadInt32Packed ( ) ;
273- config . ConnectPort = reader . ReadInt32Packed ( ) ;
274- config . ConnectAddress = reader . ReadString ( ) . ToString ( ) ;
275- config . ClientConnectionBufferTimeout = reader . ReadInt32Packed ( ) ;
276- config . ConnectionApproval = reader . ReadBool ( ) ;
277- config . SecondsHistory = reader . ReadInt32Packed ( ) ;
278- config . HandleObjectSpawning = reader . ReadBool ( ) ;
279- config . EnableEncryption = reader . ReadBool ( ) ;
280- config . SignKeyExchange = reader . ReadBool ( ) ;
281- config . EnableSceneSwitching = reader . ReadBool ( ) ;
282- config . EnableTimeResync = reader . ReadBool ( ) ;
283- config . AttributeMessageMode = ( AttributeMessageMode ) reader . ReadBits ( 3 ) ;
270+ config . MessageBufferSize = reader . ReadInt32Packed ( ) ;
271+ config . ReceiveTickrate = reader . ReadInt32Packed ( ) ;
272+ config . MaxReceiveEventsPerTickRate = reader . ReadInt32Packed ( ) ;
273+ config . SendTickrate = reader . ReadInt32Packed ( ) ;
274+ config . EventTickrate = reader . ReadInt32Packed ( ) ;
275+ config . MaxConnections = reader . ReadInt32Packed ( ) ;
276+ config . ConnectPort = reader . ReadInt32Packed ( ) ;
277+ config . ConnectAddress = reader . ReadString ( ) . ToString ( ) ;
278+ config . ClientConnectionBufferTimeout = reader . ReadInt32Packed ( ) ;
279+ config . ConnectionApproval = reader . ReadBool ( ) ;
280+ config . SecondsHistory = reader . ReadInt32Packed ( ) ;
281+ config . HandleObjectSpawning = reader . ReadBool ( ) ;
282+ config . EnableEncryption = reader . ReadBool ( ) ;
283+ config . SignKeyExchange = reader . ReadBool ( ) ;
284+ config . EnableSceneSwitching = reader . ReadBool ( ) ;
285+ config . EnableTimeResync = reader . ReadBool ( ) ;
286+ config . AttributeMessageMode = ( AttributeMessageMode ) reader . ReadBits ( 3 ) ;
287+ }
284288 }
285289 }
286290
@@ -300,42 +304,44 @@ public ulong GetConfig(bool cache = true)
300304
301305 using ( PooledBitStream stream = PooledBitStream . Get ( ) )
302306 {
303- BitWriter writer = new BitWriter ( stream ) ;
304- writer . WriteUInt16Packed ( ProtocolVersion ) ;
305- writer . WriteString ( MLAPIConstants . MLAPI_PROTOCOL_VERSION ) ;
306-
307- for ( int i = 0 ; i < Channels . Count ; i ++ )
308- {
309- writer . WriteString ( Channels [ i ] . Name ) ;
310- writer . WriteByte ( ( byte ) Channels [ i ] . Type ) ;
311- }
312- if ( EnableSceneSwitching )
307+ using ( PooledBitWriter writer = PooledBitWriter . Get ( stream ) )
313308 {
314- for ( int i = 0 ; i < RegisteredScenes . Count ; i ++ )
309+ writer . WriteUInt16Packed ( ProtocolVersion ) ;
310+ writer . WriteString ( MLAPIConstants . MLAPI_PROTOCOL_VERSION ) ;
311+
312+ for ( int i = 0 ; i < Channels . Count ; i ++ )
315313 {
316- writer . WriteString ( RegisteredScenes [ i ] ) ;
314+ writer . WriteString ( Channels [ i ] . Name ) ;
315+ writer . WriteByte ( ( byte ) Channels [ i ] . Type ) ;
317316 }
318- }
319- if ( HandleObjectSpawning )
320- {
321- for ( int i = 0 ; i < NetworkedPrefabs . Count ; i ++ )
317+ if ( EnableSceneSwitching )
322318 {
323- writer . WriteString ( NetworkedPrefabs [ i ] . name ) ;
319+ for ( int i = 0 ; i < RegisteredScenes . Count ; i ++ )
320+ {
321+ writer . WriteString ( RegisteredScenes [ i ] ) ;
322+ }
324323 }
325- }
326- writer . WriteBool ( HandleObjectSpawning ) ;
327- writer . WriteBool ( EnableEncryption ) ;
328- writer . WriteBool ( EnableSceneSwitching ) ;
329- writer . WriteBool ( SignKeyExchange ) ;
330- writer . WriteBits ( ( byte ) AttributeMessageMode , 3 ) ;
324+ if ( HandleObjectSpawning )
325+ {
326+ for ( int i = 0 ; i < NetworkedPrefabs . Count ; i ++ )
327+ {
328+ writer . WriteString ( NetworkedPrefabs [ i ] . name ) ;
329+ }
330+ }
331+ writer . WriteBool ( HandleObjectSpawning ) ;
332+ writer . WriteBool ( EnableEncryption ) ;
333+ writer . WriteBool ( EnableSceneSwitching ) ;
334+ writer . WriteBool ( SignKeyExchange ) ;
335+ writer . WriteBits ( ( byte ) AttributeMessageMode , 3 ) ;
331336
332- // Returns a 160 bit / 20 byte / 5 int checksum of the config
333- if ( cache )
334- {
335- ConfigHash = stream . ToArray ( ) . GetStableHash64 ( ) ;
336- return ConfigHash . Value ;
337+ // Returns a 160 bit / 20 byte / 5 int checksum of the config
338+ if ( cache )
339+ {
340+ ConfigHash = stream . ToArray ( ) . GetStableHash64 ( ) ;
341+ return ConfigHash . Value ;
342+ }
343+ return stream . ToArray ( ) . GetStableHash64 ( ) ;
337344 }
338- return stream . ToArray ( ) . GetStableHash64 ( ) ;
339345 }
340346 }
341347
0 commit comments