@@ -240,6 +240,72 @@ internal void OnSyncVarUpdate(object value, byte fieldIndex)
240240 syncedFields [ fieldIndex ] . SetValue ( this , value ) ;
241241 }
242242
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+
243309 private float lastSyncTime = 0f ;
244310 internal void SyncVarUpdate ( )
245311 {
0 commit comments