public void FreeLayer(SceneLayer layer) { m_unusedLayerList.Remove(layer); m_usingLayerList.Remove(layer); GameObject.Destroy(layer.gameObject); SetDirty(); }
private void AddLayerToUnsedRoot(SceneLayer layer) { layer.m_state = SceneLayerState.Unused; m_unusedLayerList.Add(layer); layer.gameObject.SetActive(false); layer.transform.SetParent(UnusedLayerRoot.transform, false); }
private void AddLayerToLoadingRoot(SceneLayer layer) { layer.m_state = SceneLayerState.Loading; m_loadingLayerList.Add(layer); layer.gameObject.SetActive(false); layer.transform.SetParent(LoadingLayerRoot.transform, false); }
public void PopLayer(SceneLayer layer) { if (layer.m_state != SceneLayerState.Using) { Debug.LogError("SceneManager:PopLayer but layer's state is not Using"); return; } m_usingLayerList.Remove(layer); m_unusedLayerList.Add(layer); layer.m_state = SceneLayerState.Unused; layer.transform.SetParent(UnusedLayerRoot.transform, false); layer.gameObject.SetActive(false); SetDirty(); }
private void OnLoadLayerAssetComplete(SceneLayer layer, GameObject asset, Action <SceneLayer> onComplete) { m_loadingLayerList.Remove(layer); if (asset != null) { var go = GameObject.Instantiate <GameObject>(asset); layer.AttachGameObject(go); AddLayerToUnsedRoot(layer); onComplete(layer); } else { FreeLayer(layer); onComplete(null); } }
private void ResetCameraDepth() { if (m_usingLayerList.Count < 2) { return; } lock (m_usingLayerList) { List <SceneLayer> thirdDLayers = new List <SceneLayer>(); List <SceneLayer> uiLayers = new List <SceneLayer>(); for (int i = 0; i < m_usingLayerList.Count; i++) { SceneLayer layer = m_usingLayerList[i]; if (layer is UISceneLayer) { uiLayers.Add(layer); } else { thirdDLayers.Add(layer); } } int depth = 0; foreach (var layer in thirdDLayers) { layer.LayerCamera.depth = depth++; } List <Camera> uiCameras = new List <Camera>(); foreach (var layer in uiLayers) { if (!uiCameras.Contains(layer.LayerCamera)) { uiCameras.Add(layer.LayerCamera); } } foreach (var uiCamera in uiCameras) { uiCamera.depth = depth++; } } }
public void PushLayer(SceneLayer layer) { if (layer.m_state != SceneLayerState.Unused) { Debug.LogError("SceneManager:PushLayer but layer's state is not Unused"); return; } m_unusedLayerList.Remove(layer); m_usingLayerList.Add(layer); layer.m_state = SceneLayerState.Using; if (layer is UISceneLayer) { layer.transform.SetParent(UILayerRoot1Canvas.transform, false); } else if (layer is ThreeDSceneLayer) { layer.transform.SetParent(ThreeDSceneRoot.transform, false); } layer.gameObject.SetActive(true); SetDirty(); }