コード例 #1
0
        void TriangulateOpenWater(HexDirection dir, HexCell cell, HexCell neighbor, Vector3 center)
        {
            var c1 = center + HexMetrics.GetFirstWaterCorner(dir);
            var c2 = center + HexMetrics.GetSecondWaterCorner(dir);

            water.AddTriangle(center, c1, c2);

            if (dir <= HexDirection.SE && neighbor)
            {
                var bridge = HexMetrics.GetWaterBridge(dir);
                var e1     = c1 + bridge;
                var e2     = c2 + bridge;

                water.AddQuad(c1, c2, e1, e2);

                if (dir <= HexDirection.E)
                {
                    var nextNeighbor = cell.GetNeighbor(dir.Next());
                    if (!nextNeighbor || !nextNeighbor.isUnderWater)
                    {
                        return;
                    }
                    water.AddTriangle(c2, e2, c2 + HexMetrics.GetWaterBridge(dir.Next()));
                }
            }
        }