public void Triangulate(DistrHexCell cell) { for (HexDirection d = HexDirection.NE; d <= HexDirection.NW; d++) { Triangulate(d, cell); } }
private void TriangulateConnection(HexDirection direction, DistrHexCell cell, Vector3 v1, Vector3 v2) { var neighbor = cell.GetNeighbor(direction); if (neighbor == null) { return; } var bridge = HexMetrics.GetBridge(direction); var v3 = v1 + bridge; var v4 = v2 + bridge; ///v3.y = v4.y = neighbor.Elevation * HexMetrics.elevation; AddQuad(v1, v2, v3, v4); AddQuadColor(cell.color, neighbor.color); var nxtNeighbor = cell.GetNeighbor(direction.Next()); if (direction <= HexDirection.E && nxtNeighbor != null) { Vector3 v5 = v2 + HexMetrics.GetBridge(direction.Next()); // v5.y = nxtNeighbor.Elevation * HexMetrics.elevation; AddTriangle(v2, v4, v5); AddTriangleColor(cell.color, neighbor.color, nxtNeighbor.color); } }
public void SetNeighbor(HexDirection direction, DistrHexCell cell) { // 'direction' represents the direction in this cell to get to cell. neighbors[(int)direction] = cell; cell.neighbors[(int)direction.Opposite()] = this; }
public bool isEdge(DistrHexCell hexCell) { var x = hexCell.coordinates.X; var z = hexCell.coordinates.Z; if (x == 0 || z == 0 || x == xWidth - 1 || z == zHeight - 1) { return(true); } return(false); }
private Vector3 Triangulate(HexDirection direction, DistrHexCell cell) { var center = cell.transform.localPosition; var vect1 = center + HexMetrics.GetFirstSolidCorner(direction); var vect2 = center + HexMetrics.GetSecondSolidCorner(direction); AddTriangle(center, vect1, vect2); AddTriangleColor(cell.color); if (direction <= HexDirection.SE) { TriangulateConnection(direction, cell, vect1, vect2); } return(vect1); }
public bool isPastEdge(DistrHexCell hexCell) { if (hexCell == null) { return(true); } var x = hexCell.coordinates.X; var z = hexCell.coordinates.Z; if (x < 0 || z < 0 || x >= xWidth || z >= zHeight) { return(true); } return(false); }
public void EditCell(DistrHexCell cell, Color color) { cell.color = color; }