private void Enable() { if (useNextViewModel != null) { viewModel = useNextViewModel; inputController = new GNBlockMapEditorInputController(viewModel); useNextViewModel = null; } else { viewModel = GNBlockMapEditorVM.CreateInstance <GNBlockMapEditorVM>(); inputController = new GNBlockMapEditorInputController(viewModel); } m_blockMap = (GNBlockMap)target; viewModel.Enable(m_blockMap); Undo.undoRedoPerformed += MyUndoCallback; viewModel.OnCellZChanged += OnCellZChanged; viewModel.OnCellXYChanged += OnCellXYChanged; viewModel.OnPrefabChanged += OnPrefabChanged; viewModel.OnGridChanged += OnGridChanged; viewModel.OnToolChanged += OnToolChanged; // clean previous brushes for (int i = 0; i < m_blockMap.transform.childCount; i++) { Transform currentChild = m_blockMap.transform.GetChild(i); if (currentChild.name == "_brush") { GameObject.DestroyImmediate(currentChild.gameObject); } } OnPrefabChanged(); OnGridChanged(); FocusSceneView(); Repaint(); m_bActive = true; }
public void Enable(GNBlockMap blockMap) { if (!m_enabled) { m_prefabNavigation = new GNPrefabNavigation(); if (m_currentPrefab != null) { m_prefabNavigation.SetCurrentPrefabPathFromPrefab(m_currentPrefab); } m_blockMap = blockMap; m_blockMap.m_bLocked = true; // Undo.RecordObject(m_blockMap, "Scene Save Enforcement"); // EditorUtility.SetDirty(m_blockMap); // UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(); m_enabled = true; UpdateCurrentCell(); UpdateVisibleLayers(false); ResetSelectedBox(); Renderer[] renderers = blockMap.GetComponentsInChildren <Renderer>(true); foreach (Renderer renderer in renderers) { EditorUtility.SetSelectedRenderState(renderer, EditorSelectedRenderState.Hidden); // EditorUtility.SetSelectedWireframeHidden(renderer, true); } m_prefabNavigation.OnFolderChanged += LoadCurrentRandomBrushFlags; MoveChildrenToCorrectTargetLayers(); EditorUtility.SetDirty(m_blockMap); if (!m_currentPrefab) { SelectPrefab(m_blockMap.m_prefab); m_prefabNavigation.SetCurrentPrefabPathFromPrefab(m_currentPrefab); } } }