Added scene sync to new clients
This commit is contained in:
parent
0b90d02371
commit
f49aa9aadb
@ -5,6 +5,7 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Networking;
|
using UnityEngine.Networking;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
|
||||||
namespace MLAPI
|
namespace MLAPI
|
||||||
{
|
{
|
||||||
@ -110,6 +111,7 @@ namespace MLAPI
|
|||||||
NetworkSceneManager.sceneIndexToString.Add((uint)i, NetworkConfig.RegisteredScenes[i]);
|
NetworkSceneManager.sceneIndexToString.Add((uint)i, NetworkConfig.RegisteredScenes[i]);
|
||||||
NetworkSceneManager.sceneNameToIndex.Add(NetworkConfig.RegisteredScenes[i], (uint)i);
|
NetworkSceneManager.sceneNameToIndex.Add(NetworkConfig.RegisteredScenes[i], (uint)i);
|
||||||
}
|
}
|
||||||
|
NetworkSceneManager.SetCurrentSceneIndex();
|
||||||
|
|
||||||
|
|
||||||
HashSet<string> channelNames = new HashSet<string>();
|
HashSet<string> channelNames = new HashSet<string>();
|
||||||
@ -475,6 +477,11 @@ namespace MLAPI
|
|||||||
using (BinaryReader messageReader = new BinaryReader(messageReadStream))
|
using (BinaryReader messageReader = new BinaryReader(messageReadStream))
|
||||||
{
|
{
|
||||||
MyClientId = messageReader.ReadInt32();
|
MyClientId = messageReader.ReadInt32();
|
||||||
|
uint sceneIndex = 0;
|
||||||
|
if(NetworkConfig.EnableSceneSwitching)
|
||||||
|
{
|
||||||
|
sceneIndex = messageReader.ReadUInt32();
|
||||||
|
}
|
||||||
connectedClients.Add(MyClientId, new NetworkedClient() { ClientId = MyClientId });
|
connectedClients.Add(MyClientId, new NetworkedClient() { ClientId = MyClientId });
|
||||||
int clientCount = messageReader.ReadInt32();
|
int clientCount = messageReader.ReadInt32();
|
||||||
for (int i = 0; i < clientCount; i++)
|
for (int i = 0; i < clientCount; i++)
|
||||||
@ -503,6 +510,10 @@ namespace MLAPI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(NetworkConfig.EnableSceneSwitching)
|
||||||
|
{
|
||||||
|
NetworkSceneManager.OnSceneSwitch(sceneIndex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -955,6 +966,11 @@ namespace MLAPI
|
|||||||
{
|
{
|
||||||
sizeOfStream += 4;
|
sizeOfStream += 4;
|
||||||
sizeOfStream += 13 * amountOfObjectsToSend;
|
sizeOfStream += 13 * amountOfObjectsToSend;
|
||||||
|
sizeOfStream += amountOfObjectsToSend; //Bool isActive
|
||||||
|
}
|
||||||
|
if(NetworkConfig.EnableSceneSwitching)
|
||||||
|
{
|
||||||
|
sizeOfStream += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
using (MemoryStream writeStream = new MemoryStream(sizeOfStream))
|
using (MemoryStream writeStream = new MemoryStream(sizeOfStream))
|
||||||
@ -962,6 +978,10 @@ namespace MLAPI
|
|||||||
using (BinaryWriter writer = new BinaryWriter(writeStream))
|
using (BinaryWriter writer = new BinaryWriter(writeStream))
|
||||||
{
|
{
|
||||||
writer.Write(clientId);
|
writer.Write(clientId);
|
||||||
|
if(NetworkConfig.EnableSceneSwitching)
|
||||||
|
{
|
||||||
|
writer.Write(NetworkSceneManager.CurrentSceneIndex);
|
||||||
|
}
|
||||||
writer.Write(connectedClients.Count - 1);
|
writer.Write(connectedClients.Count - 1);
|
||||||
foreach (KeyValuePair<int, NetworkedClient> item in connectedClients)
|
foreach (KeyValuePair<int, NetworkedClient> item in connectedClients)
|
||||||
{
|
{
|
||||||
|
@ -16,6 +16,12 @@ namespace MLAPI.NetworkingManagerComponents
|
|||||||
private static Scene lastScene;
|
private static Scene lastScene;
|
||||||
private static Scene nextScene;
|
private static Scene nextScene;
|
||||||
private static bool isSwitching = false;
|
private static bool isSwitching = false;
|
||||||
|
internal static uint CurrentSceneIndex = 0;
|
||||||
|
|
||||||
|
internal static void SetCurrentSceneIndex ()
|
||||||
|
{
|
||||||
|
CurrentSceneIndex = sceneNameToIndex[SceneManager.GetActiveScene().name];
|
||||||
|
}
|
||||||
|
|
||||||
public static void SwitchScene(string sceneName)
|
public static void SwitchScene(string sceneName)
|
||||||
{
|
{
|
||||||
@ -34,6 +40,7 @@ namespace MLAPI.NetworkingManagerComponents
|
|||||||
Debug.LogWarning("MLAPI: The scene " + sceneName + " is not registered as a switchable scene.");
|
Debug.LogWarning("MLAPI: The scene " + sceneName + " is not registered as a switchable scene.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CurrentSceneIndex = sceneNameToIndex[sceneName];
|
||||||
isSwitching = true;
|
isSwitching = true;
|
||||||
lastScene = SceneManager.GetActiveScene();
|
lastScene = SceneManager.GetActiveScene();
|
||||||
AsyncOperation sceneLoad = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
|
AsyncOperation sceneLoad = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user