Skip to content

Commit 8a5183a

Browse files
committed
feat(config): Added option to disable NetworkedVar
1 parent 7ce06c7 commit 8a5183a

File tree

5 files changed

+45
-7
lines changed

5 files changed

+45
-7
lines changed

MLAPI/Data/NetworkConfig.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,11 @@ public class NetworkConfig
8484
/// </summary>
8585
public bool EnableTimeResync = false;
8686
/// <summary>
87+
/// Whether or not to enable the NetworkedVar system. This system runs in the Update loop and will degrade performance, but it can be a huge convenience.
88+
/// Only turn it off if you have no need for the NetworkedVar system.
89+
/// </summary>
90+
public bool EnableNetworkedVar = true;
91+
/// <summary>
8792
/// Wheter or not the MLAPI should check for differences in the prefabs at connection.
8893
/// If you dynamically add prefabs at runtime, turn this OFF
8994
/// </summary>
@@ -184,6 +189,7 @@ public string ToBase64()
184189
writer.WriteBits((byte)config.RpcHashSize, 3);
185190
writer.WriteBool(ForceSamePrefabs);
186191
writer.WriteBool(UsePrefabSync);
192+
writer.WriteBool(EnableNetworkedVar);
187193
stream.PadStream();
188194

189195
return Convert.ToBase64String(stream.ToArray());
@@ -227,6 +233,7 @@ public void FromBase64(string base64)
227233
config.RpcHashSize = (HashSize)reader.ReadBits(3);
228234
config.ForceSamePrefabs = reader.ReadBool();
229235
config.UsePrefabSync = reader.ReadBool();
236+
config.EnableNetworkedVar = reader.ReadBool();
230237
}
231238
}
232239
}
@@ -266,6 +273,7 @@ public ulong GetConfig(bool cache = true)
266273
}
267274
}
268275

276+
writer.WriteBool(EnableNetworkedVar);
269277
writer.WriteBool(ForceSamePrefabs);
270278
writer.WriteBool(UsePrefabSync);
271279
writer.WriteBool(EnableEncryption);

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,10 @@ private void Update()
556556
{
557557
if ((NetworkTime - lastSendTickTime >= (1f / NetworkConfig.SendTickrate)) || NetworkConfig.SendTickrate <= 0)
558558
{
559-
NetworkedObject.NetworkedBehaviourUpdate();
559+
if (NetworkConfig.EnableNetworkedVar)
560+
{
561+
NetworkedObject.NetworkedBehaviourUpdate();
562+
}
560563

561564
foreach (KeyValuePair<ulong, NetworkedClient> pair in ConnectedClients)
562565
{
@@ -1052,7 +1055,10 @@ internal void HandleApproval(ulong clientId, ulong? prefabHash, bool approved, V
10521055
writer.WriteSinglePacked(_observedObjects[i].transform.rotation.eulerAngles.y);
10531056
writer.WriteSinglePacked(_observedObjects[i].transform.rotation.eulerAngles.z);
10541057

1055-
_observedObjects[i].WriteNetworkedVarData(stream, clientId);
1058+
if (NetworkConfig.EnableNetworkedVar)
1059+
{
1060+
_observedObjects[i].WriteNetworkedVarData(stream, clientId);
1061+
}
10561062
}
10571063

10581064
InternalMessageHandler.Send(clientId, MLAPIConstants.MLAPI_CONNECTION_APPROVED, "MLAPI_INTERNAL", stream, SecuritySendFlags.Encrypted | SecuritySendFlags.Authenticated, null, true);
@@ -1100,7 +1106,10 @@ internal void HandleApproval(ulong clientId, ulong? prefabHash, bool approved, V
11001106

11011107
writer.WriteBool(false); //No payload data
11021108

1103-
ConnectedClients[clientId].PlayerObject.GetComponent<NetworkedObject>().WriteNetworkedVarData(stream, clientPair.Key);
1109+
if (NetworkConfig.EnableNetworkedVar)
1110+
{
1111+
ConnectedClients[clientId].PlayerObject.WriteNetworkedVarData(stream, clientPair.Key);
1112+
}
11041113

11051114
InternalMessageHandler.Send(clientPair.Key, MLAPIConstants.MLAPI_ADD_OBJECT, "MLAPI_INTERNAL", stream, SecuritySendFlags.None, null);
11061115
}

MLAPI/NetworkingManagerComponents/Core/InternalMessageHandler.Receive.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,12 @@ internal static void HandleTimeSync(ulong clientId, Stream stream)
473473

474474
internal static void HandleNetworkedVarDelta(ulong clientId, Stream stream)
475475
{
476+
if (!NetworkingManager.Singleton.NetworkConfig.EnableNetworkedVar)
477+
{
478+
if (LogHelper.CurrentLogLevel <= LogLevel.Normal) LogHelper.LogWarning("NetworkedVar delta received but EnableNetworkedVar is false");
479+
return;
480+
}
481+
476482
using (PooledBitReader reader = PooledBitReader.Get(stream))
477483
{
478484
ulong networkId = reader.ReadUInt64Packed();
@@ -498,6 +504,12 @@ internal static void HandleNetworkedVarDelta(ulong clientId, Stream stream)
498504

499505
internal static void HandleNetworkedVarUpdate(ulong clientId, Stream stream)
500506
{
507+
if (!NetworkingManager.Singleton.NetworkConfig.EnableNetworkedVar)
508+
{
509+
if (LogHelper.CurrentLogLevel <= LogLevel.Normal) LogHelper.LogWarning("NetworkedVar update received but EnableNetworkedVar is false");
510+
return;
511+
}
512+
501513
using (PooledBitReader reader = PooledBitReader.Get(stream))
502514
{
503515
ulong networkId = reader.ReadUInt64Packed();

MLAPI/NetworkingManagerComponents/Core/NetworkSceneManager.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,10 @@ private static void OnSceneUnloadServer(AsyncOperation operation, Guid switchSce
228228
writer.WriteSinglePacked(newSceneObjects[i].transform.rotation.eulerAngles.y);
229229
writer.WriteSinglePacked(newSceneObjects[i].transform.rotation.eulerAngles.z);
230230

231-
newSceneObjects[i].WriteNetworkedVarData(stream, NetworkingManager.Singleton.ConnectedClientsList[j].ClientId);
231+
if (NetworkingManager.Singleton.NetworkConfig.EnableNetworkedVar)
232+
{
233+
newSceneObjects[i].WriteNetworkedVarData(stream, NetworkingManager.Singleton.ConnectedClientsList[j].ClientId);
234+
}
232235
}
233236
else
234237
{
@@ -240,7 +243,10 @@ private static void OnSceneUnloadServer(AsyncOperation operation, Guid switchSce
240243

241244
writer.WriteBool(newSceneObjects[i].DestroyWithScene);
242245

243-
newSceneObjects[i].WriteNetworkedVarData(stream, NetworkingManager.Singleton.ConnectedClientsList[j].ClientId);
246+
if (NetworkingManager.Singleton.NetworkConfig.EnableNetworkedVar)
247+
{
248+
newSceneObjects[i].WriteNetworkedVarData(stream, NetworkingManager.Singleton.ConnectedClientsList[j].ClientId);
249+
}
244250
}
245251
}
246252
}

MLAPI/NetworkingManagerComponents/Core/SpawnManager.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ internal static void SpawnNetworkedObjectLocally(NetworkedObject netObject, ulon
270270
}
271271

272272

273-
if (readNetworkedVar) netObject.SetNetworkedVarData(dataStream);
273+
if (readNetworkedVar && NetworkingManager.Singleton.NetworkConfig.EnableNetworkedVar) netObject.SetNetworkedVarData(dataStream);
274274

275275
netObject.IsSpawned = true;
276276

@@ -359,7 +359,10 @@ internal static void SendSpawnCallForObject(ulong clientId, NetworkedObject netO
359359
writer.WriteInt32Packed((int)payload.Length);
360360
}
361361

362-
netObject.WriteNetworkedVarData(stream, clientId);
362+
if (NetworkingManager.Singleton.NetworkConfig.EnableNetworkedVar)
363+
{
364+
netObject.WriteNetworkedVarData(stream, clientId);
365+
}
363366

364367
if (payload != null) stream.CopyFrom(payload);
365368
}

0 commit comments

Comments
 (0)