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