Beispiel #1
0
        //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);
        }
Beispiel #2
0
 protected void BuildChunkAsyncFromMeshData(CompressedMarchingCubeChunk chunk, Action <CompressedMarchingCubeChunk> onChunkDone)
 {
     chunkInAsync++;
     chunkGPURequest.DispatchAndGetChunkMeshDataAsync(chunk, SetChunkComponents, (data) =>
     {
         chunk.InitializeWithMeshData(data);
         onChunkDone(chunk);
         chunkInAsync--;
     });
 }