Skip to content

Commit 86b4979

Browse files
committed
fix: SyncedVar loop running on client
1 parent 19d048e commit 86b4979

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

MLAPI/Core/NetworkedBehaviour.cs

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -357,16 +357,16 @@ internal void VarUpdate()
357357

358358
private void SyncedVarUpdate()
359359
{
360-
if (!CouldHaveDirtySyncedVars())
360+
if (!IsServer || !CouldHaveDirtySyncedVars())
361361
return;
362362

363363
syncedVarIndexesToReset.Clear();
364364
syncedVarIndexesToResetSet.Clear();
365365

366-
for (int i = 0; i < (IsServer ? NetworkingManager.Singleton.ConnectedClientsList.Count : 1); i++)
366+
for (int i = 0; i < NetworkingManager.Singleton.ConnectedClientsList.Count; i++)
367367
{
368368
// Do this check here to prevent doing all the expensive dirty checks
369-
if (!IsServer || this.NetworkedObject.observers.Contains(NetworkingManager.Singleton.ConnectedClientsList[i].ClientId))
369+
if (this.NetworkedObject.observers.Contains(NetworkingManager.Singleton.ConnectedClientsList[i].ClientId))
370370
{
371371
// This iterates over every "channel group".
372372
for (int j = 0; j < channelMappedSyncedVarIndexes.Count; j++)
@@ -378,7 +378,7 @@ private void SyncedVarUpdate()
378378
writer.WriteUInt64Packed(NetworkId);
379379
writer.WriteUInt16Packed(NetworkedObject.GetOrderIndex(this));
380380

381-
ulong clientId = IsServer ? NetworkingManager.Singleton.ConnectedClientsList[i].ClientId : NetworkingManager.Singleton.ServerClientId;
381+
ulong clientId = NetworkingManager.Singleton.ConnectedClientsList[i].ClientId;
382382
bool writtenAny = false;
383383
for (int k = 0; k < syncedVars.Count; k++)
384384
{
@@ -397,21 +397,20 @@ private void SyncedVarUpdate()
397397
}
398398

399399
bool isDirty = syncedVars[k].IsDirty(); // cache this here. You never know what operations users will do in the dirty methods
400-
bool shouldWrite = isDirty && IsServer;
401400

402401
if (NetworkingManager.Singleton.NetworkConfig.EnsureNetworkedVarLengthSafety)
403402
{
404-
if (!shouldWrite)
403+
if (!isDirty)
405404
{
406405
writer.WriteUInt16Packed(0);
407406
}
408407
}
409408
else
410409
{
411-
writer.WriteBool(shouldWrite);
410+
writer.WriteBool(isDirty);
412411
}
413412

414-
if (shouldWrite)
413+
if (isDirty)
415414
{
416415
writtenAny = true;
417416

@@ -441,10 +440,7 @@ private void SyncedVarUpdate()
441440

442441
if (writtenAny)
443442
{
444-
if (IsServer)
445-
InternalMessageSender.Send(clientId, MLAPIConstants.MLAPI_SYNCED_VAR, channelsForSyncedVarGroups[j], stream, SecuritySendFlags.None, this.NetworkedObject);
446-
else
447-
InternalMessageSender.Send(NetworkingManager.Singleton.ServerClientId, MLAPIConstants.MLAPI_SYNCED_VAR, channelsForSyncedVarGroups[j], stream, SecuritySendFlags.None, null);
443+
InternalMessageSender.Send(clientId, MLAPIConstants.MLAPI_SYNCED_VAR, channelsForSyncedVarGroups[j], stream, SecuritySendFlags.None, this.NetworkedObject);
448444
}
449445
}
450446
}

0 commit comments

Comments
 (0)