void GenerateGeometry() { //Debug.Log("Generate geometry " + gameObject.name + "."); MeshData meshData = new MeshData(); meshData.Init(_hexTerrain.Types.Count * 2); for (int yi = 0; yi < _height; yi++) { for (int xi = 0; xi < _width; xi++) { if (_hexTerrain.HexData.Contains(xi + _chunkGridOffset.x, yi + _chunkGridOffset.y)) { if (_hexTerrain.HexData[yi + _chunkGridOffset.y, xi + _chunkGridOffset.x] != null) { Vector2i coordinate = new Vector2i(xi, yi); Hexagon hexa = _hexTerrain.HexData[yi + _chunkGridOffset.y, xi + _chunkGridOffset.x]; hexa.AddToChunk(ref meshData, Vector3.zero, coordinate, HexagonUtils.GetNeighbours(coordinate + _chunkGridOffset, _hexTerrain.HexData), _hexTerrain.Types); } } } } // Setup meshFilter. _mesh.Clear(); _mesh.subMeshCount = meshData.triangles.Length; _mesh.vertices = meshData.vertices.ToArray(); //_mesh.normals = _meshData.normals.ToArray(); _mesh.uv = meshData.uvs.ToArray(); for (int i = 0; i < meshData.triangles.Length; i++) { _mesh.SetTriangles(meshData.triangles[i].ToArray(), i); } _mesh.colors32 = meshData.colors.ToArray(); _mesh.RecalculateNormals(); IsDirty = false; }