/// <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); }
void RemoveLink(GridTools.HorizontalDirections dir, Cell cell) { //Выключить связь ConnectionList[(int)dir].gameObject.SetActive(false); //Удалить данные о связанной ячейке m_CellData.RemoveLinkedCell(cell); UpdateEnviroment(); }
/// <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); }
/// <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); }
void CreateLink(GridTools.HorizontalDirections dir, Cell cell, bool addCellToConnection) { //Включить связь ConnectionList[(int)dir].gameObject.SetActive(true); //Данные о связанной ячейке if (addCellToConnection) { m_CellData.AddLinkedCell(new Cell(cell)); } UpdateEnviroment(); }