@@ -238,6 +238,12 @@ internal void SyncVarInit()
238238 syncedFieldValues . Add ( sortedFields [ i ] . GetValue ( this ) ) ;
239239 syncedFieldTypes . Add ( FieldType . Quaternion ) ;
240240 }
241+ else if ( sortedFields [ i ] . FieldType == typeof ( byte [ ] ) )
242+ {
243+ syncedFields . Add ( sortedFields [ i ] ) ;
244+ syncedFieldValues . Add ( sortedFields [ i ] . GetValue ( this ) ) ;
245+ syncedFieldTypes . Add ( FieldType . ByteArray ) ;
246+ }
241247 else
242248 {
243249 Debug . LogError ( "MLAPI: The type " + sortedFields [ i ] . FieldType . ToString ( ) + " can not be used as a syncvar" ) ;
@@ -331,6 +337,10 @@ internal void FlushToClient(int clientId)
331337 writer . Write ( euler . y ) ;
332338 writer . Write ( euler . z ) ;
333339 break ;
340+ case FieldType . ByteArray :
341+ writer . Write ( ( ushort ) ( ( byte [ ] ) syncedFields [ i ] . GetValue ( this ) ) . Length ) ;
342+ writer . Write ( ( byte [ ] ) syncedFields [ i ] . GetValue ( this ) ) ;
343+ break ;
334344 }
335345 }
336346 }
@@ -420,6 +430,10 @@ internal void SyncVarUpdate()
420430 writer . Write ( euler . y ) ;
421431 writer . Write ( euler . z ) ;
422432 break ;
433+ case FieldType . ByteArray :
434+ writer . Write ( ( ushort ) ( ( byte [ ] ) syncedFields [ i ] . GetValue ( this ) ) . Length ) ;
435+ writer . Write ( ( byte [ ] ) syncedFields [ i ] . GetValue ( this ) ) ;
436+ break ;
423437
424438 }
425439 syncedFieldValues [ i ] = syncedFields [ i ] . GetValue ( this ) ;
@@ -537,6 +551,12 @@ private void SetDirtyness()
537551 else
538552 dirtyFields [ i ] = false ; //Up to date
539553 break ;
554+ case FieldType . ByteArray :
555+ if ( ( ( byte [ ] ) syncedFields [ i ] . GetValue ( this ) ) . SequenceEqual ( ( ( byte [ ] ) syncedFieldValues [ i ] ) ) )
556+ dirtyFields [ i ] = true ; //This fields value is out of sync!
557+ else
558+ dirtyFields [ i ] = false ; //Up to date
559+ break ;
540560 }
541561 }
542562 }
0 commit comments