Esempio n. 1
0
 public void Triangulate(DistrHexCell cell)
 {
     for (HexDirection d = HexDirection.NE; d <= HexDirection.NW; d++)
     {
         Triangulate(d, cell);
     }
 }
Esempio n. 2
0
    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);
        }
    }
Esempio n. 3
0
    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;
    }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
    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);
    }
Esempio n. 6
0
    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);
    }
Esempio n. 7
0
 public void EditCell(DistrHexCell cell, Color color)
 {
     cell.color = color;
 }