コード例 #1
0
        public Coroutine LoadLevel(Package.Asset asset, string playerScene, string uiScene, SimulationMetaData ngs, bool forceEnvironmentReload = false)
        {
            LoadingManager lm        = Singleton <LoadingManager> .instance;
            bool           activated = ngs.m_updateMode == SimulationManager.UpdateMode.LoadGame || ngs.m_updateMode == SimulationManager.UpdateMode.NewGameFromMap ||
                                       ngs.m_updateMode == SimulationManager.UpdateMode.NewGameFromScenario || Input.GetKey(KeyCode.LeftControl);

            instance.simulationFailed = instance.assetsStarted = instance.assetsFinished = false;

            if (!lm.m_currentlyLoading && !lm.m_applicationQuitting)
            {
                if (lm.m_LoadingWrapper != null)
                {
                    lm.m_LoadingWrapper.OnLevelUnloading(); // OnLevelUnloading
                }
                if (activated)
                {
                    Settings s = Settings.settings;
                    Util.DebugPrint("Options: 121", s.loadEnabled, s.loadUsed, s.shareTextures, s.shareMaterials, s.shareMeshes, s.reportAssets, s.skipPrefabs);

                    LoadingManager.instance.SetSceneProgress(0f);
                    instance.cityName = asset?.name ?? "NewGame";
                    Profiling.Init();
                    CustomDeserializer.Create();
                    Fixes.Create().Deploy();
                    LoadingScreen.Create().Setup();
                }

                lm.LoadingAnimationComponent.enabled = true;
                lm.m_currentlyLoading      = true;
                lm.m_metaDataLoaded        = false;
                lm.m_simulationDataLoaded  = false;
                lm.m_loadingComplete       = false;
                lm.m_renderDataReady       = false;
                lm.m_essentialScenesLoaded = false;
                lm.m_brokenAssets          = string.Empty;
                Util.Set(lm, "m_sceneProgress", 0f);
                Util.Set(lm, "m_simulationProgress", 0f);

                if (activated)
                {
                    Profiling.Start();
                }

                lm.m_loadingProfilerMain.Reset();
                lm.m_loadingProfilerSimulation.Reset();
                lm.m_loadingProfilerScenes.Reset();
                //LoadingManager.instance.m_loadingProfilerCustomContent.Reset();
                //LoadingManager.instance.m_loadingProfilerCustomAsset.Reset();

                IEnumerator iter = activated ? instance.LoadLevelCoroutine(asset, playerScene, uiScene, ngs, forceEnvironmentReload) :
                                   (IEnumerator)Util.Invoke(lm, "LoadLevelCoroutine", asset, playerScene, uiScene, ngs, forceEnvironmentReload);

                return(lm.StartCoroutine(iter));
            }

            return(null);
        }
コード例 #2
0
        public Coroutine LoadLevel(Package.Asset asset, string playerScene, string uiScene, SimulationMetaData ngs)
        {
            LoadingManager lm = Singleton <LoadingManager> .instance;

            instance.activated = ngs.m_updateMode == SimulationManager.UpdateMode.LoadGame || ngs.m_updateMode == SimulationManager.UpdateMode.NewGameFromMap ||
                                 ngs.m_updateMode == SimulationManager.UpdateMode.NewGameFromScenario || Input.GetKey(KeyCode.LeftControl);
            instance.simulationFailed = false;

            if (!lm.m_currentlyLoading && !lm.m_applicationQuitting)
            {
                if (lm.m_LoadingWrapper != null)
                {
                    lm.m_LoadingWrapper.OnLevelUnloading();
                }

                if (instance.activated)
                {
                    instance.cityName = asset?.name ?? "NewGame";
                    Profiling.Init();
                    new AssetLoader().Setup();
                    new LoadingScreen().Setup();
                }

                lm.LoadingAnimationComponent.enabled = true;
                lm.m_currentlyLoading      = true;
                lm.m_metaDataLoaded        = false;
                lm.m_simulationDataLoaded  = false;
                lm.m_loadingComplete       = false;
                lm.m_renderDataReady       = false;
                lm.m_essentialScenesLoaded = false;
                lm.m_brokenAssets          = string.Empty;
                Util.Set(lm, "m_sceneProgress", 0f);
                Util.Set(lm, "m_simulationProgress", 0f);

                if (instance.activated)
                {
                    Profiling.stopWatch.Start();
                }

                lm.m_loadingProfilerMain.Reset();
                lm.m_loadingProfilerSimulation.Reset();
                lm.m_loadingProfilerScenes.Reset();

                IEnumerator iter = instance.activated ? instance.LoadLevelCoroutine(asset, playerScene, uiScene, ngs) :
                                   (IEnumerator)Util.Invoke(lm, "LoadLevelCoroutine", asset, playerScene, uiScene, ngs);

                return(lm.StartCoroutine(iter));
            }

            return(null);
        }