コード例 #1
0
        private MeshData CopyChunkMeshData(ChunkMarchData chunkData)
        {
            MeshData meshData;

            if (chunkData.Verticies.Count > 0)
            {
                meshData = new MeshData();

                meshData.Vertices = new Vector3[chunkData.Verticies.Count];
                NativeArray <float3> tmpVertices = chunkData.Verticies.ToArray(Allocator.Temp);
                tmpVertices.Reinterpret <Vector3>().CopyTo(meshData.Vertices);
                tmpVertices.Dispose();

                meshData.Triangles = new int[chunkData.Indicies.Count];
                NativeArray <int> tmpIndicies = chunkData.Indicies.ToArray(Allocator.Temp);
                tmpIndicies.CopyTo(meshData.Triangles);
                tmpIndicies.Dispose();
            }
            else
            {
                meshData = new MeshData(0);
            }

            chunkData.Clear();

            return(meshData);
        }
コード例 #2
0
        JobHandle ScheduleChunkJob(ChunkMarchData chunkData)
        {
            FillVerticiesArrayJob fillJob = new FillVerticiesArrayJob
            {
                blocks           = chunkData.Blocks,
                verticesExpanded = chunkData.VerticesExpanded,
            };
            JobHandle fillJobHandle = fillJob.Schedule(ChunkMarchVerticies.Length, 32);

            CollapseIndiciesJob collapseJob = new CollapseIndiciesJob
            {
                blocks            = chunkData.Blocks,
                verticiesExpanded = chunkData.VerticesExpanded,
                verticies         = chunkData.Verticies,
                indicies          = chunkData.Indicies,
                marchTables       = this._marchTables,
                //mapping = chunkData.mapping,
            };

            return(collapseJob.Schedule(fillJobHandle));
        }