Skip to content

Commit 1d8d99c

Browse files
committed
Update HexMeshUtility.cs
1 parent 0d9be39 commit 1d8d99c

File tree

1 file changed

+82
-69
lines changed

1 file changed

+82
-69
lines changed

Runtime/Utility/HexMeshUtility.cs

Lines changed: 82 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -16,76 +16,89 @@ public enum HexDirection
1616

1717
public class HexMeshData
1818
{
19-
public float outerRadius;
20-
public float innerRadius;
21-
public List<Vector3> vertices;
22-
public List<int> triangles;
23-
public List<Color> colors;
24-
public List<Vector2> uv;
25-
public Vector3[] corners;
26-
27-
private float border = 0.25f;
19+
private readonly float _outerRadius;
20+
private readonly float _innerRadius;
21+
private readonly List<Vector3> _vertices;
22+
private readonly List<int> _triangles;
23+
private readonly List<Color> _colors;
24+
private readonly List<Vector2> _uv;
25+
private readonly Vector3[] _corners;
26+
private readonly float _border = 0.25f;
2827

29-
public float Border => border;
30-
public float Solid => 1 - border;
28+
public float Border => _border;
29+
public float Solid => 1 - _border;
30+
31+
public float OuterRadius => _outerRadius;
32+
33+
public float InnerRadius => _innerRadius;
34+
35+
public List<Vector3> Vertices => _vertices;
36+
37+
public List<int> Triangles => _triangles;
38+
39+
public List<Color> Colors => _colors;
40+
41+
public List<Vector2> Uv => _uv;
3142

3243
public HexMeshData()
3344
{
3445
}
3546

3647
public HexMeshData(float radius, float border = 0.2f)
3748
{
38-
this.border = Mathf.Clamp01(border);
49+
this._border = Mathf.Clamp01(border);
3950

40-
outerRadius = radius;
41-
innerRadius = HexMeshUtility.GetInnerRadius(outerRadius);
42-
vertices = new List<Vector3>();
43-
triangles = new List<int>();
44-
colors = new List<Color>();
45-
uv = new List<Vector2>();
46-
corners = new [] {
47-
new Vector3(0f, 0f, outerRadius),
48-
new Vector3(innerRadius, 0f, 0.5f * outerRadius),
49-
new Vector3(innerRadius, 0f, -0.5f * outerRadius),
50-
new Vector3(0f, 0f, -outerRadius),
51-
new Vector3(-innerRadius, 0f, -0.5f * outerRadius),
52-
new Vector3(-innerRadius, 0f, 0.5f * outerRadius),
53-
new Vector3(0f, 0f, outerRadius)
51+
_outerRadius = radius;
52+
_innerRadius = HexMeshUtility.GetInnerRadius(_outerRadius);
53+
_vertices = new List<Vector3>();
54+
_triangles = new List<int>();
55+
_colors = new List<Color>();
56+
_uv = new List<Vector2>();
57+
_corners = new [] {
58+
new Vector3(0f, 0f, _outerRadius),
59+
new Vector3(_innerRadius, 0f, 0.5f * _outerRadius),
60+
new Vector3(_innerRadius, 0f, -0.5f * _outerRadius),
61+
new Vector3(0f, 0f, -_outerRadius),
62+
new Vector3(-_innerRadius, 0f, -0.5f * _outerRadius),
63+
new Vector3(-_innerRadius, 0f, 0.5f * _outerRadius),
64+
new Vector3(0f, 0f, _outerRadius)
5465
};
5566
}
5667

5768
public Vector3 GetBridge(HexDirection direction)
5869
{
59-
return (corners[(int)direction] + corners[(int)direction + 1]) * 0.5f * border;
70+
return (_corners[(int)direction] + _corners[(int)direction + 1]) * 0.5f * _border;
6071
}
6172

6273
public Vector3 GetFirstCorner(HexDirection direction)
6374
{
64-
return corners[(int) direction];
75+
return _corners[(int) direction];
6576
}
6677

6778
public Vector3 GetSecondCorner(HexDirection direction)
6879
{
69-
return corners[(int) direction + 1];
80+
return _corners[(int) direction + 1];
7081
}
7182

7283
public Vector3 GetFirstSolidCorner(HexDirection direction)
7384
{
74-
return corners[(int) direction] * Solid;
85+
return _corners[(int) direction] * Solid;
7586
}
7687

7788
public Vector3 GetSecondSolidCorner(HexDirection direction)
7889
{
79-
return corners[(int) direction + 1] * Solid;
90+
return _corners[(int) direction + 1] * Solid;
8091
}
8192

8293
public Mesh CreateMesh()
8394
{
84-
Mesh mesh = new Mesh();
85-
mesh.vertices = vertices.ToArray();
86-
mesh.triangles = triangles.ToArray();
87-
mesh.colors = colors.ToArray();
88-
mesh.uv = uv.ToArray();
95+
var mesh = new Mesh
96+
{
97+
vertices = _vertices.ToArray(),
98+
triangles = _triangles.ToArray(),
99+
colors = _colors.ToArray(),
100+
uv = _uv.ToArray()
101+
};
89102
mesh.RecalculateNormals();
90103
return mesh;
91104
}
@@ -186,7 +199,7 @@ public static Mesh GenerateHexagonMesh(float radius, float border, int startX, i
186199
var index = (y * mapWidth) + x;
187200

188201
var xOffset = x + y * 0.5f - (int)(y / 2);
189-
var center = new Vector3(xOffset*meshData.innerRadius*2,0,y*meshData.outerRadius*1.5f);
202+
var center = new Vector3(xOffset*meshData.InnerRadius*2,0,y*meshData.OuterRadius*1.5f);
190203

191204
for (var direction = 0; direction < 6; direction++)
192205
{
@@ -254,51 +267,51 @@ private static void AddTriangle(HexMeshData meshData, Vector3 center, Vector3 uv
254267

255268
private static void AddTriangle(HexMeshData meshData, Vector3 v1, Vector3 v2, Vector3 v3, Color color, Vector3 uv)
256269
{
257-
var vertexIndex = meshData.vertices.Count;
270+
var vertexIndex = meshData.Vertices.Count;
258271

259-
meshData.vertices.Add(v1);
260-
meshData.vertices.Add(v2);
261-
meshData.vertices.Add(v3);
272+
meshData.Vertices.Add(v1);
273+
meshData.Vertices.Add(v2);
274+
meshData.Vertices.Add(v3);
262275

263-
meshData.colors.Add(color);
264-
meshData.colors.Add(color);
265-
meshData.colors.Add(color);
276+
meshData.Colors.Add(color);
277+
meshData.Colors.Add(color);
278+
meshData.Colors.Add(color);
266279

267-
meshData.uv.Add(uv);
268-
meshData.uv.Add(uv);
269-
meshData.uv.Add(uv);
280+
meshData.Uv.Add(uv);
281+
meshData.Uv.Add(uv);
282+
meshData.Uv.Add(uv);
270283

271-
meshData.triangles.Add(vertexIndex);
272-
meshData.triangles.Add(vertexIndex + 1);
273-
meshData.triangles.Add(vertexIndex + 2);
284+
meshData.Triangles.Add(vertexIndex);
285+
meshData.Triangles.Add(vertexIndex + 1);
286+
meshData.Triangles.Add(vertexIndex + 2);
274287
}
275288

276289
private static void AddQuad(HexMeshData meshData, Vector3 v1, Vector3 v2, Vector3 v3, Vector3 v4, Color color, Vector3 uv)
277290
{
278-
var vertexIndex = meshData.vertices.Count;
291+
var vertexIndex = meshData.Vertices.Count;
279292

280-
meshData.vertices.Add(v1);
281-
meshData.vertices.Add(v2);
282-
meshData.vertices.Add(v3);
283-
meshData.vertices.Add(v4);
293+
meshData.Vertices.Add(v1);
294+
meshData.Vertices.Add(v2);
295+
meshData.Vertices.Add(v3);
296+
meshData.Vertices.Add(v4);
284297

285-
meshData.colors.Add(color);
286-
meshData.colors.Add(color);
287-
meshData.colors.Add(color);
288-
meshData.colors.Add(color);
298+
meshData.Colors.Add(color);
299+
meshData.Colors.Add(color);
300+
meshData.Colors.Add(color);
301+
meshData.Colors.Add(color);
289302

290-
meshData.uv.Add(uv);
291-
meshData.uv.Add(uv);
292-
meshData.uv.Add(uv);
293-
meshData.uv.Add(uv);
303+
meshData.Uv.Add(uv);
304+
meshData.Uv.Add(uv);
305+
meshData.Uv.Add(uv);
306+
meshData.Uv.Add(uv);
294307

295-
meshData.triangles.Add(vertexIndex);
296-
meshData.triangles.Add(vertexIndex + 2);
297-
meshData.triangles.Add(vertexIndex + 1);
308+
meshData.Triangles.Add(vertexIndex);
309+
meshData.Triangles.Add(vertexIndex + 2);
310+
meshData.Triangles.Add(vertexIndex + 1);
298311

299-
meshData.triangles.Add(vertexIndex + 1);
300-
meshData.triangles.Add(vertexIndex + 2);
301-
meshData.triangles.Add(vertexIndex + 3);
312+
meshData.Triangles.Add(vertexIndex + 1);
313+
meshData.Triangles.Add(vertexIndex + 2);
314+
meshData.Triangles.Add(vertexIndex + 3);
302315
}
303316

304317
}

0 commit comments

Comments
 (0)