// Update is called once per frame void Update() { if(Application.loadedLevelName == "Loading Screen" && startLoad){ if(!runOnce){ lCam = Camera.main.GetComponent<LoadingCamera>(); StartCoroutine(AsyncLoadLevel()); runOnce = true; } else{ if(loading){ print(async.progress); lCam.loadScreenVisible = false; Invoke("StartNextScene", 1.5f); Invoke("SelfDestruct", 4.5f); } } } }
protected virtual IEnumerator OnLevelStartedCoroutine() { VolumetricFogAndMist2.VolumetricFogManager volumetricFogManager = GameObject.FindObjectOfType <VolumetricFogAndMist2.VolumetricFogManager>(); if (volumetricFogManager) { volumetricFogManager.gameObject.SetActive(false); } // Wait game to initalize while (!GameManager.initialized) { yield return(new WaitForEndOfFrame()); } if (this.gameObject.scene.name.ToLower() == "master") { data = Catalog.GetData <LevelData>("Master"); } else { while (SceneManager.GetActiveScene() != this.gameObject.scene) { yield return(new WaitForEndOfFrame()); } } try { if (modeRank == null) { modeRank = data.GetFirstModRank(); } // Load level mode module foreach (LevelModule levelModeModule in modeRank.mode.modules) { levelModeModule.OnLevelLoaded(this); } } catch (Exception e) { LoadingCamera.SetState(LoadingCamera.State.Error); throw; } // Wait modules to load foreach (LevelModule levelModeModule in modeRank.mode.modules) { while (!levelModeModule.initialized) { yield return(new WaitForEndOfFrame()); } } if (data.id.ToLower() != "master") { Player player = null; try { // Spawn player if (data.spawnPlayer) { player = Instantiate(Resources.Load("Player", typeof(Player)) as Player, playerStart.position, playerStart.rotation); player.morphology = GameManager.playerData.morphology; EventManager.InvokePlayerSpawned(player); } if (player && Application.platform != RuntimePlatform.Android) { GameManager.liv.HMDCamera = player.head.cam; GameManager.liv.TrackedSpaceOrigin = player.transform; GameManager.liv.enabled = true; } } catch (Exception e) { LoadingCamera.SetState(LoadingCamera.State.Error); throw; } // Spawn player body if (data.spawnBody && player) { Creature playerCreature = null; try { playerCreature = Catalog.GetData <CreatureData>(GameManager.playerData.GetCreatureID()).Spawn(playerStart.position, playerStart.rotation, false); playerCreature.container.containerID = null; playerCreature.container.content = GameManager.playerData.inventory; } catch (Exception e) { LoadingCamera.SetState(LoadingCamera.State.Error); throw; } while (!playerCreature.initialized) { yield return(new WaitForEndOfFrame()); } if (playerCreature.umaCharacter) { try { playerCreature.umaCharacter.LoadUmaPreset(GameManager.playerData.umaPreset, null, playerCreature.container); } catch (Exception e) { LoadingCamera.SetState(LoadingCamera.State.Error); throw; } while (playerCreature.umaCharacter.characterDataLoading) { yield return(new WaitForEndOfFrame()); } } while (!playerCreature.initialized) { yield return(new WaitForEndOfFrame()); } try { player.SetBody(playerCreature.body); } catch (Exception e) { LoadingCamera.SetState(LoadingCamera.State.Error); throw; } } try { if (data.fadeOutTime > 0) { PostProcessManager.local.DoTimedEffect(Color.black, PostProcessManager.TimedEffect.FadeOut, data.fadeOutTime); } } catch (Exception e) { LoadingCamera.SetState(LoadingCamera.State.Error); throw; } } if (data.musicAudioContainer) { music = this.gameObject.AddComponent <AudioSource>(); music.loop = true; music.outputAudioMixerGroup = GameManager.GetAudioMixerGroup(AudioMixerName.Music); music.clip = data.musicAudioContainer.PickAudioClip(); music.Play(); if (data.musicAudioContainer.sounds.Count > 1) { Invoke("MusicChange", music.clip.length); } } if (volumetricFogManager) { volumetricFogManager.gameObject.SetActive(true); } LoadingCamera.SetState(LoadingCamera.State.Disabled); initialized = true; }