/// <summary> /// General subscene loader /// </summary> /// <param name="sceneName"></param> /// <returns></returns> IEnumerator LoadSubScene(string sceneName, SubsceneLoadTimer loadTimer = null) { AsyncOperation AO = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); while (!AO.isDone) { if (loadTimer != null) { loadTimer.IncrementLoadBar(); } yield return(WaitFor.EndOfFrame); } if (loadTimer != null) { loadTimer.IncrementLoadBar(); } if (isServer) { NetworkServer.SpawnObjects(); } else { ClientScene.PrepareToSpawnSceneObjects(); yield return(WaitFor.Seconds(0.2f)); RequestObserverRefresh.Send(sceneName); } }
public void AddsIdentitiesToDictionaryUsingSceneId() { NetworkIdentity obj1 = CreateSceneObject(20); NetworkIdentity obj2 = CreateSceneObject(21); obj1.gameObject.SetActive(false); obj2.gameObject.SetActive(false); ClientScene.PrepareToSpawnSceneObjects(); Assert.IsTrue(spawnableObjects.ContainsKey(20)); Assert.That(spawnableObjects[20], Is.EqualTo(obj1)); Assert.IsTrue(spawnableObjects.ContainsKey(21)); Assert.That(spawnableObjects[21], Is.EqualTo(obj2)); }
public void DoesNotAddObjectsWithNoSceneId() { NetworkIdentity noId1 = CreateSceneObject(0); NetworkIdentity noId2 = CreateSceneObject(0); NetworkIdentity hasId1 = CreateSceneObject(40); NetworkIdentity hasId2 = CreateSceneObject(41); noId1.gameObject.SetActive(false); noId2.gameObject.SetActive(false); hasId1.gameObject.SetActive(false); hasId2.gameObject.SetActive(false); ClientScene.PrepareToSpawnSceneObjects(); Assert.IsTrue(spawnableObjects.ContainsValue(hasId1)); Assert.IsTrue(spawnableObjects.ContainsValue(hasId2)); Assert.IsFalse(spawnableObjects.ContainsValue(noId1)); Assert.IsFalse(spawnableObjects.ContainsValue(noId2)); }
public void AddsAllInactiveIdentitiesInSceneWithSceneIdToDictionary() { NetworkIdentity obj1 = CreateSceneObject(10); NetworkIdentity obj2 = CreateSceneObject(11); NetworkIdentity obj3 = CreateSceneObject(12); NetworkIdentity obj4 = CreateSceneObject(13); obj1.gameObject.SetActive(false); obj2.gameObject.SetActive(false); obj3.gameObject.SetActive(false); obj4.gameObject.SetActive(false); ClientScene.PrepareToSpawnSceneObjects(); Assert.That(spawnableObjects, Has.Count.EqualTo(4)); Assert.IsTrue(spawnableObjects.ContainsValue(obj1)); Assert.IsTrue(spawnableObjects.ContainsValue(obj2)); Assert.IsTrue(spawnableObjects.ContainsValue(obj3)); Assert.IsTrue(spawnableObjects.ContainsValue(obj4)); }
public void DoesNotAddActiveObjectsToDictionary() { NetworkIdentity active1 = CreateSceneObject(30); NetworkIdentity active2 = CreateSceneObject(31); NetworkIdentity inactive1 = CreateSceneObject(32); NetworkIdentity inactive2 = CreateSceneObject(33); active1.gameObject.SetActive(true); active2.gameObject.SetActive(true); inactive1.gameObject.SetActive(false); inactive2.gameObject.SetActive(false); ClientScene.PrepareToSpawnSceneObjects(); Assert.That(spawnableObjects, Has.Count.EqualTo(2)); Assert.IsTrue(spawnableObjects.ContainsValue(inactive1)); Assert.IsTrue(spawnableObjects.ContainsValue(inactive2)); Assert.IsFalse(spawnableObjects.ContainsValue(active1)); Assert.IsFalse(spawnableObjects.ContainsValue(active2)); }
public void ClearsExistingItemsFromDictionary() { // destroyed objects from old scene spawnableObjects.Add(60, null); spawnableObjects.Add(62, null); // active object NetworkIdentity obj1 = CreateSceneObject(61); spawnableObjects.Add(61, obj1); // new disabled object NetworkIdentity obj2 = CreateSceneObject(63); obj2.gameObject.SetActive(false); ClientScene.PrepareToSpawnSceneObjects(); Assert.That(spawnableObjects, Has.Count.EqualTo(1)); Assert.IsFalse(spawnableObjects.ContainsValue(null)); Assert.IsTrue(spawnableObjects.ContainsValue(obj2)); }