internal void WorkerGenerateMesh(IVoxelTerrainMesher mesher) { // Update neighbors UpdateNeighbors(); // Generate mesh mesher.GenerateMesh(this); // Update collision info UpdateCollision(); HasMesh = true; }
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); } }