//Force complete the chunk job, update the mesh and dispose the native containers private void CompleteChunkJob() { optimizeHandle.Complete(); Mesh mesh = new Mesh(); mesh.vertices = finalVertices.ToArray(); mesh.triangles = finalTriangles.ToArray(); mesh.colors = finalColors.ToArray(); mesh.Optimize(); //mesh.RecalculateNormals(); GetComponent <MeshFilter>().sharedMesh = mesh; GetComponent <MeshCollider>().sharedMesh = mesh; //Dispose the NativeContainers vertices.Dispose(); finalVertices.Dispose(); triangles.Dispose(); finalTriangles.Dispose(); colors.Dispose(); finalColors.Dispose(); triTable.Dispose(); edgeTable.Dispose(); edgeTable2.Dispose(); completed = true; terrain.ChunkGenerated(this); }