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);
     }
 }
예제 #2
0
        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);
    }