コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
                }
            }
        }