예제 #1
0
        private void WorkerProcessOne(GeneratorTask task, IVoxelTerrainGenerator generator, IVoxelTerrainMesher mesher)
        {
            var chunk = task.Chunk;

            // Chunk generation rules/problems:
            // - To generate chunk mesh, the chunk must have all neighbor chunks
            // - Neighbor chunk can be still generating (how to deal with this?)
            // - We cannot make the chunk active (chunk.IsActive=true), until meshing finishes

            // TODO: Chunk processing implementation

            // Temporary
            if (task.GenerateVoxels)
            {
                chunk.State = VoxelTerrainChunkState.GeneratingVoxels;
                chunk.WorkerGenerateVoxels(generator);
            }

            if (task.GenerateMesh)
            {
                chunk.State = VoxelTerrainChunkState.GeneratingMesh;
                chunk.WorkerGenerateMesh(mesher);
            }
        }
예제 #2
0
 internal void WorkerGenerateVoxels(IVoxelTerrainGenerator generator)
 {
     generator.GenerateVoxels(WorldPosition, ref _voxels);
     HasVoxels = true;
 }