Skip to content

Commit f939d31

Browse files
authored
Merge pull request #298 from MidLevel/syncedvar
feat: SyncedVar
2 parents 2379b76 + 271218d commit f939d31

File tree

11 files changed

+642
-160
lines changed

11 files changed

+642
-160
lines changed

MLAPI/Configuration/MLAPIConstants.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace MLAPI.Configuration
1+
namespace MLAPI.Configuration
22
{
33
/// <summary>
44
/// A static class containing MLAPI constants
@@ -30,6 +30,7 @@ internal static class MLAPIConstants
3030
internal const byte MLAPI_UNNAMED_MESSAGE = 20;
3131
internal const byte MLAPI_DESTROY_OBJECTS = 21;
3232
internal const byte MLAPI_NAMED_MESSAGE = 22;
33+
internal const byte MLAPI_SYNCED_VAR = 23;
3334
internal const byte INVALID = 32;
3435

3536
internal static readonly string[] MESSAGE_NAMES = {
@@ -56,7 +57,7 @@ internal static class MLAPIConstants
5657
"MLAPI_UNNAMED_MESSAGE",
5758
"MLAPI_DESTROY_OBJECTS",
5859
"MLAPI_NAMED_MESSAGE",
59-
"",
60+
"MLAPI_SYNCED_VAR",
6061
"",
6162
"",
6263
"",

MLAPI/Core/NetworkedBehaviour.cs

Lines changed: 424 additions & 115 deletions
Large diffs are not rendered by default.

MLAPI/Core/NetworkedObject.cs

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -546,21 +546,43 @@ internal static void NetworkedBehaviourUpdate()
546546
for (int i = 0; i < amountToProcess; i++)
547547
{
548548
if (_lastProcessedObject >= SpawnManager.SpawnedObjectsList.Count)
549+
{
549550
_lastProcessedObject = 0;
551+
}
550552

551553
// Sync all vars
552554
for (int j = 0; j < SpawnManager.SpawnedObjectsList[_lastProcessedObject].childNetworkedBehaviours.Count; j++)
553-
SpawnManager.SpawnedObjectsList[_lastProcessedObject].childNetworkedBehaviours[j].NetworkedVarUpdate();
555+
{
556+
SpawnManager.SpawnedObjectsList[_lastProcessedObject].childNetworkedBehaviours[j].VarUpdate();
557+
}
554558

555559
_lastProcessedObject++;
556560
}
557561
}
558562

563+
internal void WriteSyncedVarData(Stream stream, ulong clientId)
564+
{
565+
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
566+
{
567+
childNetworkedBehaviours[i].InitializeVars();
568+
NetworkedBehaviour.WriteSyncedVarData(childNetworkedBehaviours[i].syncedVars, stream, clientId);
569+
}
570+
}
571+
572+
internal void SetSyncedVarData(Stream stream)
573+
{
574+
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
575+
{
576+
childNetworkedBehaviours[i].InitializeVars();
577+
NetworkedBehaviour.SetSyncedVarData(childNetworkedBehaviours[i].syncedVars, stream);
578+
}
579+
}
580+
559581
internal void WriteNetworkedVarData(Stream stream, ulong clientId)
560582
{
561583
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
562584
{
563-
childNetworkedBehaviours[i].NetworkedVarInit();
585+
childNetworkedBehaviours[i].InitializeVars();
564586
NetworkedBehaviour.WriteNetworkedVarData(childNetworkedBehaviours[i].networkedVarFields, stream, clientId);
565587
}
566588
}
@@ -569,7 +591,7 @@ internal void SetNetworkedVarData(Stream stream)
569591
{
570592
for (int i = 0; i < childNetworkedBehaviours.Count; i++)
571593
{
572-
childNetworkedBehaviours[i].NetworkedVarInit();
594+
childNetworkedBehaviours[i].InitializeVars();
573595
NetworkedBehaviour.SetNetworkedVarData(childNetworkedBehaviours[i].networkedVarFields, stream);
574596
}
575597
}

MLAPI/Core/NetworkingManager.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ private void OnEnable()
593593
else
594594
{
595595
Singleton = this;
596-
if (OnSingletonReady != null)
596+
if (OnSingletonReady != null)
597597
OnSingletonReady();
598598
if (DontDestroy)
599599
DontDestroyOnLoad(gameObject);
@@ -992,6 +992,9 @@ private void HandleIncomingData(ulong clientId, string channelName, ArraySegment
992992
case MLAPIConstants.MLAPI_CLIENT_SWITCH_SCENE_COMPLETED:
993993
if (IsServer && NetworkConfig.EnableSceneManagement) InternalMessageHandler.HandleClientSwitchSceneCompleted(clientId, messageStream);
994994
break;
995+
case MLAPIConstants.MLAPI_SYNCED_VAR:
996+
if (IsClient) InternalMessageHandler.HandleSyncedVar(clientId, messageStream);
997+
break;
995998
default:
996999
if (LogHelper.CurrentLogLevel <= LogLevel.Error) LogHelper.LogError("Read unrecognized messageType " + messageType);
9971000
break;
@@ -1228,6 +1231,7 @@ internal void HandleApproval(ulong clientId, bool createPlayerObject, ulong? pla
12281231
if (NetworkConfig.EnableNetworkedVar)
12291232
{
12301233
observedObject.WriteNetworkedVarData(stream, clientId);
1234+
observedObject.WriteSyncedVarData(stream, clientId);
12311235
}
12321236
}
12331237

@@ -1288,6 +1292,7 @@ internal void HandleApproval(ulong clientId, bool createPlayerObject, ulong? pla
12881292
if (NetworkConfig.EnableNetworkedVar)
12891293
{
12901294
ConnectedClients[clientId].PlayerObject.WriteNetworkedVarData(stream, clientPair.Key);
1295+
ConnectedClients[clientId].PlayerObject.WriteSyncedVarData(stream, clientPair.Key);
12911296
}
12921297

12931298
InternalMessageSender.Send(clientPair.Key, MLAPIConstants.MLAPI_ADD_OBJECT, "MLAPI_INTERNAL", stream, SecuritySendFlags.None, null);

0 commit comments

Comments
 (0)