예제 #1
0
        /// <summary>
        /// Удалить связь с ячейкой
        /// </summary>
        /// <param name="linkedCell">Связаная ячейка</param>
        public void UnlinkCell(CellBehaviour linkedCell)
        {
            //Определить тип горизонтального направления к ячейке по вектору направления
            Vector3 dirToLinkedCell = (transform.position - linkedCell.transform.position).normalized;

            GridTools.HorizontalDirections hDir = GridTools.GetHorizontalDirectionByVector(dirToLinkedCell);

            RemoveLink(hDir, linkedCell.GetCellData().RootCell);
        }
예제 #2
0
        void RemoveLink(GridTools.HorizontalDirections dir, Cell cell)
        {
            //Выключить связь
            ConnectionList[(int)dir].gameObject.SetActive(false);

            //Удалить данные о связанной ячейке
            m_CellData.RemoveLinkedCell(cell);

            UpdateEnviroment();
        }
예제 #3
0
        /// <summary>
        /// Создать связь с ячейкой
        /// </summary>
        /// <param name="linkedCell">Связаная ячейка</param>
        /// <param name="addCellToConnection">Добавить ячейку в связи (редактор) <c>true</c>,
        /// иначе не добавлять ячейку в связи (загрущка)</param>
        public void LinkCell(CellBehaviour linkedCell, bool addCellToConnection = true)
        {
            //Определить тип горизонтального направления к ячейке по вектору направления
            Vector3 dirToLinkedCell = (transform.position - linkedCell.transform.position).normalized;

            GridTools.HorizontalDirections hDir = GridTools.GetHorizontalDirectionByVector(dirToLinkedCell);

            CreateLink(hDir, linkedCell.GetCellData().RootCell, addCellToConnection);

            //Обновить высоту всем соединениям конкретной ячейки
            UpdateVerticalDirectionForConnections(true);
        }
예제 #4
0
        /// <summary>
        /// Задать высоту соединения с конкретной ячейкой
        /// </summary>
        void SetVerticalDirectionToLinkedCell(CellBehaviour linkedCellBehaviour)
        {
            //Направление к ячейке
            Vector3 dirToLinkedCell = (transform.position - linkedCellBehaviour.transform.position).normalized;

            //Направление по вертикали и по горизонтали
            GridTools.HorizontalDirections hDir = GridTools.GetHorizontalDirectionByVector(dirToLinkedCell);
            GridTools.VerticalDirections   vDir = GridTools.GetVerticalDirectionByVector(dirToLinkedCell);

            //Изменить состояние направления соединения
            ConnectionList[(int)hDir].SetVerticaDirection(vDir);
        }
예제 #5
0
        void CreateLink(GridTools.HorizontalDirections dir, Cell cell, bool addCellToConnection)
        {
            //Включить связь
            ConnectionList[(int)dir].gameObject.SetActive(true);

            //Данные о связанной ячейке
            if (addCellToConnection)
            {
                m_CellData.AddLinkedCell(new Cell(cell));
            }

            UpdateEnviroment();
        }