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); } }
internal void WorkerGenerateVoxels(IVoxelTerrainGenerator generator) { generator.GenerateVoxels(WorldPosition, ref _voxels); HasVoxels = true; }