void GenerateChunk(int x, int y, int z, bool threaded) { if (threaded) { threadedDataGenerator.toDO.Enqueue(new ThreadedDataGenerator.JobToDo { x = x, y = y, z = z, scale = scale }); } else { AddMeshToWorld(DataPolygonizer.MeshFromChunkData(vdm.GenerateData(chunkSize, scale, new Vector3Int(x, y, z)), chunkSize), x, y, z); } }
public void Execute() { int[] _tris; Color[] _cols; Vector3[] _verts; DataPolygonizer.MarchingCubes(data.ToArray(), chunkSize, out _verts, out _tris, out _cols); lengths[0] = _verts.Length; for (int i = 0; i < _verts.Length; i++) { vertices[i] = _verts[i]; col[i] = _cols[i]; } lengths[1] = _tris.Length; for (int i = 0; i < _tris.Length; i++) { tris[i] = _tris[i]; } }
void ThreadedDataPolygonizerDataJobTOMesh(ThreadedDataPolygonizer.JobFinished j) { Vector3[] vertices = new Vector3[j.lengths[0]]; int[] tris = new int[j.lengths[1]]; Color[] col = new Color[j.lengths[0]]; Vector3[] _verts = j.vertices.ToArray(); int[] _tris = j.tris.ToArray(); Color[] _cols = j.col.ToArray(); for (int i = 0; i < vertices.Length; i++) { vertices[i] = _verts[i]; col[i] = _cols[i]; } for (int i = 0; i < tris.Length; i++) { tris[i] = _tris[i]; } AddMeshToWorld(DataPolygonizer.MeshFromMeshData(vertices, tris, col), j.x, j.y, j.z); }