@@ -453,88 +453,91 @@ internal void SyncVarUpdate()
453
453
}
454
454
else
455
455
{
456
- //It's sync time. This is the target receivers packet.
457
- using ( BitWriter writer = new BitWriter ( ) )
456
+ if ( ! ( isHost && new NetId ( ownerClientId ) . IsHost ( ) ) )
458
457
{
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 ( ) )
464
460
{
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 ++ )
467
466
{
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 )
470
469
{
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
+ }
528
530
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
+ }
534
537
}
535
538
}
539
+ InternalMessageHandler . Send ( ownerClientId , "MLAPI_SYNC_VAR_UPDATE" , "MLAPI_INTERNAL" , writer . Finalize ( ) ) ; //Send only to target
536
540
}
537
- InternalMessageHandler . Send ( ownerClientId , "MLAPI_SYNC_VAR_UPDATE" , "MLAPI_INTERNAL" , writer . Finalize ( ) ) ; //Send only to target
538
541
}
539
542
540
543
if ( nonTargetDirtyCount == 0 )
0 commit comments