@@ -162,49 +162,51 @@ public string ToBase64()
162
162
NetworkConfig config = this ;
163
163
using ( PooledBitStream stream = PooledBitStream . Get ( ) )
164
164
{
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 ) )
171
166
{
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 ) ;
175
169
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
+ }
181
176
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
+ }
188
182
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 ) ;
206
207
207
- return Convert . ToBase64String ( stream . ToArray ( ) ) ;
208
+ return Convert . ToBase64String ( stream . ToArray ( ) ) ;
209
+ }
208
210
}
209
211
}
210
212
@@ -219,68 +221,70 @@ public void FromBase64(string base64, bool createDummyObject = false)
219
221
byte [ ] binary = Convert . FromBase64String ( base64 ) ;
220
222
using ( BitStream stream = new BitStream ( binary ) )
221
223
{
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 ) )
230
225
{
231
- Channel channel = new Channel ( )
232
- {
233
- Name = reader . ReadString ( ) . ToString ( ) ,
234
- Type = ( ChannelType ) reader . ReadBits ( 5 )
235
- } ;
236
- config . Channels . Add ( channel ) ;
237
- }
238
226
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 ) ;
245
229
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 ++ )
255
233
{
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 ) ;
258
240
}
259
- NetworkedPrefab networkedPrefab = new NetworkedPrefab ( )
241
+
242
+ ushort sceneCount = reader . ReadUInt16Packed ( ) ;
243
+ config . RegisteredScenes . Clear ( ) ;
244
+ for ( int i = 0 ; i < sceneCount ; i ++ )
260
245
{
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
+ }
266
269
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
+ }
284
288
}
285
289
}
286
290
@@ -300,42 +304,44 @@ public ulong GetConfig(bool cache = true)
300
304
301
305
using ( PooledBitStream stream = PooledBitStream . Get ( ) )
302
306
{
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 ) )
313
308
{
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 ++ )
315
313
{
316
- writer . WriteString ( RegisteredScenes [ i ] ) ;
314
+ writer . WriteString ( Channels [ i ] . Name ) ;
315
+ writer . WriteByte ( ( byte ) Channels [ i ] . Type ) ;
317
316
}
318
- }
319
- if ( HandleObjectSpawning )
320
- {
321
- for ( int i = 0 ; i < NetworkedPrefabs . Count ; i ++ )
317
+ if ( EnableSceneSwitching )
322
318
{
323
- writer . WriteString ( NetworkedPrefabs [ i ] . name ) ;
319
+ for ( int i = 0 ; i < RegisteredScenes . Count ; i ++ )
320
+ {
321
+ writer . WriteString ( RegisteredScenes [ i ] ) ;
322
+ }
324
323
}
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 ) ;
331
336
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 ( ) ;
337
344
}
338
- return stream . ToArray ( ) . GetStableHash64 ( ) ;
339
345
}
340
346
}
341
347
0 commit comments