/// <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); }
/// <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); }