@@ -453,88 +453,91 @@ internal void SyncVarUpdate()
453453 }
454454 else
455455 {
456- //It's sync time. This is the target receivers packet.
457- using ( BitWriter writer = new BitWriter ( ) )
456+ if ( ! ( isHost && new NetId ( ownerClientId ) . IsHost ( ) ) )
458457 {
459- //Write all indexes
460- writer . WriteByte ( totalDirtyCount ) ;
461- writer . WriteUInt ( networkId ) ; //NetId
462- writer . WriteUShort ( networkedObject . GetOrderIndex ( this ) ) ; //Behaviour OrderIndex
463- for ( byte i = 0 ; i < syncedVarFields . Count ; i ++ )
458+ //It's sync time. This is the target receivers packet.
459+ using ( BitWriter writer = new BitWriter ( ) )
464460 {
465- //Writes all the indexes of the dirty syncvars.
466- if ( syncedVarFields [ i ] . Dirty == true )
461+ //Write all indexes
462+ writer . WriteByte ( totalDirtyCount ) ;
463+ writer . WriteUInt ( networkId ) ; //NetId
464+ writer . WriteUShort ( networkedObject . GetOrderIndex ( this ) ) ; //Behaviour OrderIndex
465+ for ( byte i = 0 ; i < syncedVarFields . Count ; i ++ )
467466 {
468- writer . WriteByte ( i ) ; //FieldIndex
469- switch ( syncedVarFields [ i ] . FieldType )
467+ //Writes all the indexes of the dirty syncvars.
468+ if ( syncedVarFields [ i ] . Dirty == true )
470469 {
471- case FieldType . Bool :
472- writer . WriteBool ( ( bool ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
473- break ;
474- case FieldType . Byte :
475- writer . WriteByte ( ( byte ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
476- break ;
477- case FieldType . Double :
478- writer . WriteDouble ( ( double ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
479- break ;
480- case FieldType . Single :
481- writer . WriteFloat ( ( float ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
482- break ;
483- case FieldType . Int :
484- writer . WriteInt ( ( int ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
485- break ;
486- case FieldType . Long :
487- writer . WriteLong ( ( long ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
488- break ;
489- case FieldType . SByte :
490- writer . WriteSByte ( ( sbyte ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
491- break ;
492- case FieldType . Short :
493- writer . WriteShort ( ( short ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
494- break ;
495- case FieldType . UInt :
496- writer . WriteUInt ( ( uint ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
497- break ;
498- case FieldType . ULong :
499- writer . WriteULong ( ( ulong ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
500- break ;
501- case FieldType . UShort :
502- writer . WriteUShort ( ( ushort ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
503- break ;
504- case FieldType . String :
505- writer . WriteString ( ( string ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
506- break ;
507- case FieldType . Vector3 :
508- Vector3 vector3 = ( Vector3 ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ;
509- writer . WriteFloat ( vector3 . x ) ;
510- writer . WriteFloat ( vector3 . y ) ;
511- writer . WriteFloat ( vector3 . z ) ;
512- break ;
513- case FieldType . Vector2 :
514- Vector2 vector2 = ( Vector2 ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ;
515- writer . WriteFloat ( vector2 . x ) ;
516- writer . WriteFloat ( vector2 . y ) ;
517- break ;
518- case FieldType . Quaternion :
519- Vector3 euler = ( ( Quaternion ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) . eulerAngles ;
520- writer . WriteFloat ( euler . x ) ;
521- writer . WriteFloat ( euler . y ) ;
522- writer . WriteFloat ( euler . z ) ;
523- break ;
524- case FieldType . ByteArray :
525- writer . WriteByteArray ( ( byte [ ] ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
526- break ;
527- }
470+ writer . WriteByte ( i ) ; //FieldIndex
471+ switch ( syncedVarFields [ i ] . FieldType )
472+ {
473+ case FieldType . Bool :
474+ writer . WriteBool ( ( bool ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
475+ break ;
476+ case FieldType . Byte :
477+ writer . WriteByte ( ( byte ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
478+ break ;
479+ case FieldType . Double :
480+ writer . WriteDouble ( ( double ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
481+ break ;
482+ case FieldType . Single :
483+ writer . WriteFloat ( ( float ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
484+ break ;
485+ case FieldType . Int :
486+ writer . WriteInt ( ( int ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
487+ break ;
488+ case FieldType . Long :
489+ writer . WriteLong ( ( long ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
490+ break ;
491+ case FieldType . SByte :
492+ writer . WriteSByte ( ( sbyte ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
493+ break ;
494+ case FieldType . Short :
495+ writer . WriteShort ( ( short ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
496+ break ;
497+ case FieldType . UInt :
498+ writer . WriteUInt ( ( uint ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
499+ break ;
500+ case FieldType . ULong :
501+ writer . WriteULong ( ( ulong ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
502+ break ;
503+ case FieldType . UShort :
504+ writer . WriteUShort ( ( ushort ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
505+ break ;
506+ case FieldType . String :
507+ writer . WriteString ( ( string ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
508+ break ;
509+ case FieldType . Vector3 :
510+ Vector3 vector3 = ( Vector3 ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ;
511+ writer . WriteFloat ( vector3 . x ) ;
512+ writer . WriteFloat ( vector3 . y ) ;
513+ writer . WriteFloat ( vector3 . z ) ;
514+ break ;
515+ case FieldType . Vector2 :
516+ Vector2 vector2 = ( Vector2 ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ;
517+ writer . WriteFloat ( vector2 . x ) ;
518+ writer . WriteFloat ( vector2 . y ) ;
519+ break ;
520+ case FieldType . Quaternion :
521+ Vector3 euler = ( ( Quaternion ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) . eulerAngles ;
522+ writer . WriteFloat ( euler . x ) ;
523+ writer . WriteFloat ( euler . y ) ;
524+ writer . WriteFloat ( euler . z ) ;
525+ break ;
526+ case FieldType . ByteArray :
527+ writer . WriteByteArray ( ( byte [ ] ) syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ) ;
528+ break ;
529+ }
528530
529- if ( nonTargetDirtyCount == 0 )
530- {
531- //Only targeted SyncedVars were changed. Thus we need to set them as non dirty here since it wont be done by the next loop.
532- syncedVarFields [ i ] . FieldValue = syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ;
533- syncedVarFields [ i ] . Dirty = false ;
531+ if ( nonTargetDirtyCount == 0 )
532+ {
533+ //Only targeted SyncedVars were changed. Thus we need to set them as non dirty here since it wont be done by the next loop.
534+ syncedVarFields [ i ] . FieldValue = syncedVarFields [ i ] . FieldInfo . GetValue ( this ) ;
535+ syncedVarFields [ i ] . Dirty = false ;
536+ }
534537 }
535538 }
539+ InternalMessageHandler . Send ( ownerClientId , "MLAPI_SYNC_VAR_UPDATE" , "MLAPI_INTERNAL" , writer . Finalize ( ) ) ; //Send only to target
536540 }
537- InternalMessageHandler . Send ( ownerClientId , "MLAPI_SYNC_VAR_UPDATE" , "MLAPI_INTERNAL" , writer . Finalize ( ) ) ; //Send only to target
538541 }
539542
540543 if ( nonTargetDirtyCount == 0 )
0 commit comments