Skip to content

Commit f49aa9a

Browse files
committed
Added scene sync to new clients
1 parent 0b90d02 commit f49aa9a

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.IO;
66
using UnityEngine;
77
using UnityEngine.Networking;
8+
using UnityEngine.SceneManagement;
89

910
namespace MLAPI
1011
{
@@ -110,6 +111,7 @@ private ConnectionConfig Init(NetworkingConfiguration netConfig)
110111
NetworkSceneManager.sceneIndexToString.Add((uint)i, NetworkConfig.RegisteredScenes[i]);
111112
NetworkSceneManager.sceneNameToIndex.Add(NetworkConfig.RegisteredScenes[i], (uint)i);
112113
}
114+
NetworkSceneManager.SetCurrentSceneIndex();
113115

114116

115117
HashSet<string> channelNames = new HashSet<string>();
@@ -475,6 +477,11 @@ private void HandleIncomingData(int clientId, byte[] data, int channelId)
475477
using (BinaryReader messageReader = new BinaryReader(messageReadStream))
476478
{
477479
MyClientId = messageReader.ReadInt32();
480+
uint sceneIndex = 0;
481+
if(NetworkConfig.EnableSceneSwitching)
482+
{
483+
sceneIndex = messageReader.ReadUInt32();
484+
}
478485
connectedClients.Add(MyClientId, new NetworkedClient() { ClientId = MyClientId });
479486
int clientCount = messageReader.ReadInt32();
480487
for (int i = 0; i < clientCount; i++)
@@ -503,6 +510,10 @@ private void HandleIncomingData(int clientId, byte[] data, int channelId)
503510
}
504511
}
505512
}
513+
if(NetworkConfig.EnableSceneSwitching)
514+
{
515+
NetworkSceneManager.OnSceneSwitch(sceneIndex);
516+
}
506517
}
507518
}
508519
}
@@ -955,13 +966,22 @@ private void HandleApproval(int clientId, bool approved)
955966
{
956967
sizeOfStream += 4;
957968
sizeOfStream += 13 * amountOfObjectsToSend;
969+
sizeOfStream += amountOfObjectsToSend; //Bool isActive
970+
}
971+
if(NetworkConfig.EnableSceneSwitching)
972+
{
973+
sizeOfStream += 4;
958974
}
959975

960976
using (MemoryStream writeStream = new MemoryStream(sizeOfStream))
961977
{
962978
using (BinaryWriter writer = new BinaryWriter(writeStream))
963979
{
964980
writer.Write(clientId);
981+
if(NetworkConfig.EnableSceneSwitching)
982+
{
983+
writer.Write(NetworkSceneManager.CurrentSceneIndex);
984+
}
965985
writer.Write(connectedClients.Count - 1);
966986
foreach (KeyValuePair<int, NetworkedClient> item in connectedClients)
967987
{

MLAPI/NetworkingManagerComponents/NetworkSceneManager.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ internal static class NetworkSceneManager
1616
private static Scene lastScene;
1717
private static Scene nextScene;
1818
private static bool isSwitching = false;
19+
internal static uint CurrentSceneIndex = 0;
20+
21+
internal static void SetCurrentSceneIndex ()
22+
{
23+
CurrentSceneIndex = sceneNameToIndex[SceneManager.GetActiveScene().name];
24+
}
1925

2026
public static void SwitchScene(string sceneName)
2127
{
@@ -34,6 +40,7 @@ public static void SwitchScene(string sceneName)
3440
Debug.LogWarning("MLAPI: The scene " + sceneName + " is not registered as a switchable scene.");
3541
return;
3642
}
43+
CurrentSceneIndex = sceneNameToIndex[sceneName];
3744
isSwitching = true;
3845
lastScene = SceneManager.GetActiveScene();
3946
AsyncOperation sceneLoad = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);

0 commit comments

Comments
 (0)