示例#1
0
 // 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);
     }
 }
示例#2
0
        // 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);
        }
示例#3
0
        // 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);
            }
        }