void EditModeChangedHandler(bool isEditMode) { CellBehaviour curCell = (CellBehaviour)target; GridController gridController = FindObjectOfType <GridController>(); if (!isEditMode) //Если режим редактрирования выключен { //Выключеть текущий режим CellBehaviour.LINK_MODE = false; CellBehaviour.UNLINK_MODE = false; //Обновить цвета всех ячеек до изначального gridController.ResetColor(); } else { //Цвет текущей ячейки curCell.ColorizeCell(gridController.MaterialSelectedCell); } }
void OnSceneGUI() { //Отслеживание состояния изменения редима редактирования для текущей ячейки if (CellBehaviour.EDIT_MODE.Equals(!CellBehaviour.PREV_EDIT_MODE)) { CellBehaviour.PREV_EDIT_MODE = CellBehaviour.EDIT_MODE; CellBehaviour curCell = (CellBehaviour)target; curCell.OnEditModeChanged(CellBehaviour.EDIT_MODE); } //Выделение ячейки на которую наведен указатель if (CellBehaviour.EDIT_MODE) { CellBehaviour targetCell = GetCell(); if (targetCell != null) { CellBehaviour curCell = (CellBehaviour)target; //Если выделеная ячейка не текущая if (!curCell.Equals(targetCell)) { GridController gridController = FindObjectOfType <GridController>(); //Восстановить цвет предыдущей ячейке if (CellBehaviour.PrevTargetCell != null) { CellBehaviour.PrevTargetCell.ColorizeCell(gridController.MaterialNormalCell); } //Предыдущая ячейка равняеться текущей CellBehaviour.PrevTargetCell = targetCell; //Покрасить текущю ячейку if (CellIsAvailable(curCell.GetCellData().RootCell, targetCell.GetCellData().RootCell)) { targetCell.ColorizeCell(gridController.MaterialTargetCell); } else { targetCell.ColorizeCell(gridController.MaterialUnavailableCell); } //Нарисовать линию к выбранной ячейке Handles.DrawLine(curCell.transform.position, targetCell.transform.position); } } } //Связка ячеек CellBehaviour linkedCell = GetCellByClick(); if (linkedCell != null) { CellBehaviour curCell = (CellBehaviour)target; if (CellIsAvailable(curCell.GetCellData().RootCell, linkedCell.GetCellData().RootCell)) { curCell.OnCellSelected(linkedCell); } } }