@@ -240,6 +240,72 @@ internal void OnSyncVarUpdate(object value, byte fieldIndex)
240
240
syncedFields [ fieldIndex ] . SetValue ( this , value ) ;
241
241
}
242
242
243
+ internal void FlushToClient ( int clientId )
244
+ {
245
+ //This NetworkedBehaviour has no SyncVars
246
+ if ( dirtyFields . Length == 0 )
247
+ return ;
248
+
249
+ using ( MemoryStream stream = new MemoryStream ( ) )
250
+ {
251
+ using ( BinaryWriter writer = new BinaryWriter ( stream ) )
252
+ {
253
+ //Write all indexes
254
+ writer . Write ( dirtyFields . Length ) ;
255
+ for ( byte i = 0 ; i < dirtyFields . Length ; i ++ )
256
+ {
257
+ writer . Write ( networkId ) ;
258
+ writer . Write ( networkedObject . GetOrderIndex ( this ) ) ;
259
+ writer . Write ( networkedBehaviourId ) ;
260
+ writer . Write ( i ) ; //Index
261
+ switch ( syncedFieldTypes [ i ] )
262
+ {
263
+ case FieldType . Bool :
264
+ writer . Write ( ( bool ) syncedFields [ i ] . GetValue ( this ) ) ;
265
+ break ;
266
+ case FieldType . Byte :
267
+ writer . Write ( ( byte ) syncedFields [ i ] . GetValue ( this ) ) ;
268
+ break ;
269
+ case FieldType . Char :
270
+ writer . Write ( ( char ) syncedFields [ i ] . GetValue ( this ) ) ;
271
+ break ;
272
+ case FieldType . Double :
273
+ writer . Write ( ( double ) syncedFields [ i ] . GetValue ( this ) ) ;
274
+ break ;
275
+ case FieldType . Single :
276
+ writer . Write ( ( float ) syncedFields [ i ] . GetValue ( this ) ) ;
277
+ break ;
278
+ case FieldType . Int :
279
+ writer . Write ( ( int ) syncedFields [ i ] . GetValue ( this ) ) ;
280
+ break ;
281
+ case FieldType . Long :
282
+ writer . Write ( ( long ) syncedFields [ i ] . GetValue ( this ) ) ;
283
+ break ;
284
+ case FieldType . SByte :
285
+ writer . Write ( ( sbyte ) syncedFields [ i ] . GetValue ( this ) ) ;
286
+ break ;
287
+ case FieldType . Short :
288
+ writer . Write ( ( short ) syncedFields [ i ] . GetValue ( this ) ) ;
289
+ break ;
290
+ case FieldType . UInt :
291
+ writer . Write ( ( uint ) syncedFields [ i ] . GetValue ( this ) ) ;
292
+ break ;
293
+ case FieldType . ULong :
294
+ writer . Write ( ( ulong ) syncedFields [ i ] . GetValue ( this ) ) ;
295
+ break ;
296
+ case FieldType . UShort :
297
+ writer . Write ( ( ushort ) syncedFields [ i ] . GetValue ( this ) ) ;
298
+ break ;
299
+ case FieldType . String :
300
+ writer . Write ( ( string ) syncedFields [ i ] . GetValue ( this ) ) ;
301
+ break ;
302
+ }
303
+ }
304
+ NetworkingManager . singleton . Send ( clientId , "MLAPI_SYNC_VAR_UPDATE" , "MLAPI_RELIABLE_FRAGMENTED_SEQUENCED" , stream . ToArray ( ) ) ;
305
+ }
306
+ }
307
+ }
308
+
243
309
private float lastSyncTime = 0f ;
244
310
internal void SyncVarUpdate ( )
245
311
{
0 commit comments