Skip to content

Commit 3fd318e

Browse files
authored
Merge pull request #2 from coryleach/dev
Dev
2 parents 3d0ad13 + 84bc308 commit 3fd318e

17 files changed

+340
-153
lines changed

.codacy.yml

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
exclude_paths:
2+
- '*.md'

Images/Preview.png

169 KB
Loading

Images/Preview.png.meta

+92
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<h1 align="center">Gameframe.Procgen 👋</h1>
2-
<p>
3-
<img alt="Version" src="https://img.shields.io/badge/version-0.0.2-blue.svg?cacheSeconds=2592000" />
4-
<a href="https://twitter.com/Cory Leach">
5-
<img alt="Twitter: coryleach" src="https://img.shields.io/twitter/follow/coryleach.svg?style=social" target="_blank" />
6-
</a>
7-
</p>
2+
3+
<!-- BADGE-START -->
4+
![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/coryleach/UnityProcgen?include_prereleases)
5+
[![license](https://img.shields.io/github/license/coryleach/UnityGiphy)](https://github.com/coryleach/UnityProcgen/blob/master/LICENSE)
6+
7+
[![twitter](https://img.shields.io/twitter/follow/coryleach.svg?style=social)](https://twitter.com/coryleach)
8+
<!-- BADGE-END -->
89

910
Library of utilitities for procedural generation
1011

@@ -13,15 +14,15 @@ Library of utilitities for procedural generation
1314
#### Using UnityPackageManager (for Unity 2019.3 or later)
1415
Open the package manager window (menu: Window > Package Manager)<br/>
1516
Select "Add package from git URL...", fill in the pop-up with the following link:<br/>
16-
https://github.com/coryleach/UnityProcgen.git#0.0.3<br/>
17+
https://github.com/coryleach/UnityProcgen.git#0.0.4<br/>
1718

1819
#### Using UnityPackageManager (for Unity 2019.1 or later)
1920

2021
Find the manifest.json file in the Packages folder of your project and edit it to look like this:
2122
```js
2223
{
2324
"dependencies": {
24-
"com.gameframe.procgen": "https://github.com/coryleach/UnityProcgen.git#0.0.3",
25+
"com.gameframe.procgen": "https://github.com/coryleach/UnityProcgen.git#0.0.4",
2526
...
2627
},
2728
}

Runtime/Utility/HexMeshUtility.cs

+88-69
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 = outerRadius * Mathf.Sqrt(3f) * 0.5f;
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
}
@@ -94,6 +107,12 @@ public Mesh CreateMesh()
94107

95108
public static class HexMeshUtility
96109
{
110+
//Calculates the inner radius from the outer radius
111+
public static float GetInnerRadius(float outerRadius)
112+
{
113+
return outerRadius * Mathf.Sqrt(3f) * 0.5f;
114+
}
115+
97116
public static HexDirection Previous(this HexDirection direction)
98117
{
99118
return direction == HexDirection.NE ? HexDirection.NW : (direction - 1);
@@ -180,7 +199,7 @@ public static Mesh GenerateHexagonMesh(float radius, float border, int startX, i
180199
var index = (y * mapWidth) + x;
181200

182201
var xOffset = x + y * 0.5f - (int)(y / 2);
183-
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);
184203

185204
for (var direction = 0; direction < 6; direction++)
186205
{
@@ -248,51 +267,51 @@ private static void AddTriangle(HexMeshData meshData, Vector3 center, Vector3 uv
248267

249268
private static void AddTriangle(HexMeshData meshData, Vector3 v1, Vector3 v2, Vector3 v3, Color color, Vector3 uv)
250269
{
251-
var vertexIndex = meshData.vertices.Count;
270+
var vertexIndex = meshData.Vertices.Count;
252271

253-
meshData.vertices.Add(v1);
254-
meshData.vertices.Add(v2);
255-
meshData.vertices.Add(v3);
272+
meshData.Vertices.Add(v1);
273+
meshData.Vertices.Add(v2);
274+
meshData.Vertices.Add(v3);
256275

257-
meshData.colors.Add(color);
258-
meshData.colors.Add(color);
259-
meshData.colors.Add(color);
276+
meshData.Colors.Add(color);
277+
meshData.Colors.Add(color);
278+
meshData.Colors.Add(color);
260279

261-
meshData.uv.Add(uv);
262-
meshData.uv.Add(uv);
263-
meshData.uv.Add(uv);
280+
meshData.Uv.Add(uv);
281+
meshData.Uv.Add(uv);
282+
meshData.Uv.Add(uv);
264283

265-
meshData.triangles.Add(vertexIndex);
266-
meshData.triangles.Add(vertexIndex + 1);
267-
meshData.triangles.Add(vertexIndex + 2);
284+
meshData.Triangles.Add(vertexIndex);
285+
meshData.Triangles.Add(vertexIndex + 1);
286+
meshData.Triangles.Add(vertexIndex + 2);
268287
}
269288

270289
private static void AddQuad(HexMeshData meshData, Vector3 v1, Vector3 v2, Vector3 v3, Vector3 v4, Color color, Vector3 uv)
271290
{
272-
var vertexIndex = meshData.vertices.Count;
291+
var vertexIndex = meshData.Vertices.Count;
273292

274-
meshData.vertices.Add(v1);
275-
meshData.vertices.Add(v2);
276-
meshData.vertices.Add(v3);
277-
meshData.vertices.Add(v4);
293+
meshData.Vertices.Add(v1);
294+
meshData.Vertices.Add(v2);
295+
meshData.Vertices.Add(v3);
296+
meshData.Vertices.Add(v4);
278297

279-
meshData.colors.Add(color);
280-
meshData.colors.Add(color);
281-
meshData.colors.Add(color);
282-
meshData.colors.Add(color);
298+
meshData.Colors.Add(color);
299+
meshData.Colors.Add(color);
300+
meshData.Colors.Add(color);
301+
meshData.Colors.Add(color);
283302

284-
meshData.uv.Add(uv);
285-
meshData.uv.Add(uv);
286-
meshData.uv.Add(uv);
287-
meshData.uv.Add(uv);
303+
meshData.Uv.Add(uv);
304+
meshData.Uv.Add(uv);
305+
meshData.Uv.Add(uv);
306+
meshData.Uv.Add(uv);
288307

289-
meshData.triangles.Add(vertexIndex);
290-
meshData.triangles.Add(vertexIndex + 2);
291-
meshData.triangles.Add(vertexIndex + 1);
308+
meshData.Triangles.Add(vertexIndex);
309+
meshData.Triangles.Add(vertexIndex + 2);
310+
meshData.Triangles.Add(vertexIndex + 1);
292311

293-
meshData.triangles.Add(vertexIndex + 1);
294-
meshData.triangles.Add(vertexIndex + 2);
295-
meshData.triangles.Add(vertexIndex + 3);
312+
meshData.Triangles.Add(vertexIndex + 1);
313+
meshData.Triangles.Add(vertexIndex + 2);
314+
meshData.Triangles.Add(vertexIndex + 3);
296315
}
297316

298317
}

0 commit comments

Comments
 (0)