//public MarchingCubeChunkNeighbourLODs GetNeighbourLODSFrom(ReducedMarchingCubesChunk chunk) //{ // MarchingCubeChunkNeighbourLODs result = new MarchingCubeChunkNeighbourLODs(); // Vector3Int[] coords = VectorExtension.GetAllAdjacentDirections; // for (int i = 0; i < coords.Length; ++i) // { // MarchingCubeNeighbour neighbour = new MarchingCubeNeighbour(); // Vector3Int neighbourPos = chunk.CenterPos + chunk.ChunkSize * coords[i]; // if (!TryGetChunkAtPosition(neighbourPos, out neighbour.chunk)) // { // //change name to extectedLodPower // neighbour.estimatedLodPower = GetLodPowerAt(neighbourPos); // } // result[i] = neighbour; // } // return result; //} //TODO:Remove keep points //protected void BuildChunk(CompressedMarchingCubeChunk chunk, Action<ComputeBuffer> WorkOnNoise = null) //{ // TriangleChunkHeap ts = chunkGPURequest.DispatchAndGetTriangleData(chunk, SetChunkComponents, WorkOnNoise); // chunk.InitializeWithTriangleData(ts); //} protected MeshData BuildChunkMeshData(CompressedMarchingCubeChunk chunk, Action <ComputeBuffer> WorkOnNoise = null) { channeledChunks.Add(chunk); MeshData data = chunkGPURequest.DispatchAndGetChunkMeshData(chunk, SetChunkComponents, WorkOnNoise); chunk.InitializeWithMeshData(data); return(data); }
protected void BuildChunkAsyncFromMeshData(CompressedMarchingCubeChunk chunk, Action <CompressedMarchingCubeChunk> onChunkDone) { chunkInAsync++; chunkGPURequest.DispatchAndGetChunkMeshDataAsync(chunk, SetChunkComponents, (data) => { chunk.InitializeWithMeshData(data); onChunkDone(chunk); chunkInAsync--; }); }