Skip to content

Commit 8e11b4b

Browse files
committed
feat: Added SyncedVars
1 parent 70ee6a9 commit 8e11b4b

File tree

9 files changed

+609
-160
lines changed

9 files changed

+609
-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: 428 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
@@ -591,7 +591,7 @@ private void OnEnable()
591591
else
592592
{
593593
Singleton = this;
594-
if (OnSingletonReady != null)
594+
if (OnSingletonReady != null)
595595
OnSingletonReady();
596596
if (DontDestroy)
597597
DontDestroyOnLoad(gameObject);
@@ -990,6 +990,9 @@ private void HandleIncomingData(ulong clientId, string channelName, ArraySegment
990990
case MLAPIConstants.MLAPI_CLIENT_SWITCH_SCENE_COMPLETED:
991991
if (IsServer && NetworkConfig.EnableSceneManagement) InternalMessageHandler.HandleClientSwitchSceneCompleted(clientId, messageStream);
992992
break;
993+
case MLAPIConstants.MLAPI_SYNCED_VAR:
994+
if (IsClient) InternalMessageHandler.HandleSyncedVar(clientId, messageStream);
995+
break;
993996
default:
994997
if (LogHelper.CurrentLogLevel <= LogLevel.Error) LogHelper.LogError("Read unrecognized messageType " + messageType);
995998
break;
@@ -1226,6 +1229,7 @@ internal void HandleApproval(ulong clientId, bool createPlayerObject, ulong? pla
12261229
if (NetworkConfig.EnableNetworkedVar)
12271230
{
12281231
observedObject.WriteNetworkedVarData(stream, clientId);
1232+
observedObject.WriteSyncedVarData(stream, clientId);
12291233
}
12301234
}
12311235

@@ -1286,6 +1290,7 @@ internal void HandleApproval(ulong clientId, bool createPlayerObject, ulong? pla
12861290
if (NetworkConfig.EnableNetworkedVar)
12871291
{
12881292
ConnectedClients[clientId].PlayerObject.WriteNetworkedVarData(stream, clientPair.Key);
1293+
ConnectedClients[clientId].PlayerObject.WriteSyncedVarData(stream, clientPair.Key);
12891294
}
12901295

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

0 commit comments

Comments
 (0)