Skip to content

Commit 8e19568

Browse files
committed
Added Unity 5 support
1 parent 190564e commit 8e19568

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,10 @@ private ConnectionConfig Init(NetworkingConfiguration netConfig)
110110
//Legacy channel. ReliableFragmentedSequenced doesn't exist in older Unity versions.
111111
if(NetworkConfig.UseLegacyChannel)
112112
NetworkConfig.Channels.Add("MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", QosType.ReliableSequenced);
113+
#if !UNITY_5 //Unity 5.6 has confirmed to not have the ReliableFragmentedSequenced channel type.
113114
else
114115
NetworkConfig.Channels.Add("MLAPI_RELIABLE_FRAGMENTED_SEQUENCED", QosType.ReliableFragmentedSequenced);
116+
#endif
115117

116118
NetworkConfig.Channels.Add("MLAPI_POSITION_UPDATE", QosType.StateUpdate);
117119
NetworkConfig.Channels.Add("MLAPI_ANIMATION_UPDATE", QosType.ReliableSequenced);
@@ -177,6 +179,17 @@ private ConnectionConfig Init(NetworkingConfiguration netConfig)
177179
return cConfig;
178180
}
179181

182+
#if UNITY_5
183+
internal IEnumerator WaitForSceneSwitch(AsyncOperation operation, Action callback)
184+
{
185+
while(!operation.isDone)
186+
{
187+
yield return null;
188+
}
189+
callback();
190+
}
191+
#endif
192+
180193

181194
public void StartServer(NetworkingConfiguration netConfig)
182195
{

MLAPI/NetworkingManagerComponents/NetworkSceneManager.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,15 @@ public static void SwitchScene(string sceneName)
4747
isSwitching = true;
4848
lastScene = SceneManager.GetActiveScene();
4949
AsyncOperation sceneLoad = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
50+
#if !UNITY_5
5051
sceneLoad.completed += OnSceneLoaded;
52+
#else
53+
NetworkingManager.singleton.StartCoroutine(NetworkingManager.singleton.WaitForSceneSwitch(sceneLoad, () =>
54+
{
55+
//This block runs when scene switch is done.
56+
OnSceneLoaded(sceneLoad);
57+
}));
58+
#endif
5159
using(MemoryStream stream = new MemoryStream(4))
5260
{
5361
using (BinaryWriter writer = new BinaryWriter(stream))
@@ -72,7 +80,15 @@ internal static void OnSceneSwitch(uint sceneIndex)
7280
}
7381
lastScene = SceneManager.GetActiveScene();
7482
AsyncOperation sceneLoad = SceneManager.LoadSceneAsync(sceneIndexToString[sceneIndex], LoadSceneMode.Additive);
83+
#if !UNITY_5
7584
sceneLoad.completed += OnSceneLoaded;
85+
#else
86+
NetworkingManager.singleton.StartCoroutine(NetworkingManager.singleton.WaitForSceneSwitch(sceneLoad, () =>
87+
{
88+
//This block runs when scene switch is done.
89+
OnSceneLoaded(sceneLoad);
90+
}));
91+
#endif
7692
}
7793

7894
private static void OnSceneLoaded(AsyncOperation operation)
@@ -85,7 +101,15 @@ private static void OnSceneLoaded(AsyncOperation operation)
85101
SceneManager.MoveGameObjectToScene(objectsToKeep[i].gameObject, nextScene);
86102
}
87103
AsyncOperation sceneLoad = SceneManager.UnloadSceneAsync(lastScene);
104+
#if !UNITY_5
88105
sceneLoad.completed += OnSceneUnload;
106+
#else
107+
NetworkingManager.singleton.StartCoroutine(NetworkingManager.singleton.WaitForSceneSwitch(sceneLoad, () =>
108+
{
109+
//This block runs when scene switch is done.
110+
OnSceneUnload(sceneLoad);
111+
}));
112+
#endif
89113
}
90114

91115
private static void OnSceneUnload(AsyncOperation operation)

0 commit comments

Comments
 (0)