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); }
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)); }