// Token: 0x060006D8 RID: 1752 RVA: 0x0001FA3C File Offset: 0x0001DC3C public void FreeLayer(SceneLayerBase layer) { if (layer == null) { return; } if (layer.State == SceneLayerBase.LayerState.Loading) { layer.State = SceneLayerBase.LayerState.WaitForFree; return; } if (layer.State == SceneLayerBase.LayerState.InStack) { this.PopLayer(layer); if (layer.IsReserve()) { return; } } this.m_layerDict.Remove(layer.LayerName); this.m_unusedLayerList.Remove(layer); this.m_loadingLayerList.Remove(layer); if (layer.GetType() != typeof(UnitySceneLayer)) { UnityEngine.Object.Destroy(layer.gameObject); } else { UnitySceneLayer unitySceneLayer = layer as UnitySceneLayer; SceneManager.UnloadSceneAsync(unitySceneLayer.Scene); } }
// Token: 0x060006D7 RID: 1751 RVA: 0x0001F9EC File Offset: 0x0001DBEC private void CreateUnitySceneLayer(string name, string resPath, Action <SceneLayerBase> onComplete) { Scene? scene; IEnumerator corutine = ResourceManager.Instance.LoadUnityScene(resPath, delegate(string lpath, Scene? lscene) { if (lscene == null) { onComplete(null); return; } scene = lscene; GameObject[] rootGameObjects = scene.Value.GetRootGameObjects(); if (rootGameObjects == null || rootGameObjects.Length == 0) { onComplete(null); return; } UnitySceneLayer unitySceneLayer = rootGameObjects[0].AddComponent <UnitySceneLayer>(); unitySceneLayer.SetName(name); unitySceneLayer.SetScene(scene.Value); this.m_layerDict.Add(name, unitySceneLayer); unitySceneLayer.State = SceneLayerBase.LayerState.Unused; this.m_unusedLayerList.Add(unitySceneLayer); this.PushLayer(unitySceneLayer); onComplete(unitySceneLayer); }, false, false); this.m_corutineHelper.StartCorutine(corutine); }
// Token: 0x060006E2 RID: 1762 RVA: 0x0001FEB8 File Offset: 0x0001E0B8 private void UpdateLayerStack() { if (!this.m_stackDirty) { return; } this.m_stackDirty = false; this.SortLayerStack(this.m_layerStack); bool flag = false; int num = SceneManager.m_cameraDepthMax; Vector3 vector = Vector3.zero; UnitySceneLayer unitySceneLayer = null; this.m_uiSceneGroup2RootCanvasGo.SetActive(false); for (int i = this.m_layerStack.Count - 1; i >= 0; i--) { SceneLayerBase sceneLayerBase = this.m_layerStack[i]; if (sceneLayerBase.GetType() == typeof(UISceneLayer)) { if (!flag) { sceneLayerBase.gameObject.transform.SetParent(this.m_uiSceneGroup1RootCanvasGo.transform, false); sceneLayerBase.gameObject.transform.localPosition = Vector3.zero; sceneLayerBase.gameObject.transform.localScale = Vector3.one; sceneLayerBase.gameObject.transform.SetAsFirstSibling(); sceneLayerBase.LayerCamera.depth = (float)num; } else { if (!this.m_uiSceneGroup2RootCanvasGo.activeSelf) { this.m_uiSceneGroup2RootCanvasGo.SetActive(true); } sceneLayerBase.gameObject.transform.SetParent(this.m_uiSceneGroup2RootCanvasGo.transform, false); sceneLayerBase.gameObject.transform.localPosition = Vector3.zero; sceneLayerBase.gameObject.transform.SetAsFirstSibling(); sceneLayerBase.LayerCamera.depth = (float)num; } } else if (sceneLayerBase.GetType() == typeof(ThreeDSceneLayer)) { sceneLayerBase.gameObject.transform.SetParent(this.m_3DSceneRootGo.transform, false); sceneLayerBase.gameObject.transform.localPosition = vector; vector += this.m_layerOffset; sceneLayerBase.LayerCamera.depth = (float)(--num); num--; MonoBehaviour monoBehaviour = sceneLayerBase.LayerCamera.gameObject.GetComponent("UnityStandardAssets.ImageEffects.BlurOptimized") as MonoBehaviour; if (monoBehaviour != null) { monoBehaviour.enabled = this.m_is3DLayerBlurActive; } flag = true; } else { unitySceneLayer = ((!(unitySceneLayer == null)) ? unitySceneLayer : ((UnitySceneLayer)sceneLayerBase)); sceneLayerBase.LayerCamera.depth = (float)(--num); num--; flag = true; } } bool flag2 = false; LayerRenderSettingDesc layerRenderSettingDesc = null; for (int j = this.m_layerStack.Count - 1; j >= 0; j--) { SceneLayerBase sceneLayerBase2 = this.m_layerStack[j]; layerRenderSettingDesc = ((!(layerRenderSettingDesc == null)) ? layerRenderSettingDesc : sceneLayerBase2.GetRenderSetting()); if (!flag2) { sceneLayerBase2.gameObject.SetActive(true); } else { sceneLayerBase2.gameObject.SetActive(false); } if (sceneLayerBase2.IsOpaque() && sceneLayerBase2.IsFullScreen()) { flag2 = true; } } if (layerRenderSettingDesc == null) { layerRenderSettingDesc = this.GetDefaultRenderSetting(); } if (unitySceneLayer != null) { if (SceneManager.GetActiveScene() != unitySceneLayer.Scene) { SceneManager.SetActiveScene(unitySceneLayer.Scene); } } else { this.ApplyRenderSetting(layerRenderSettingDesc); } }