private void BuildChunkFromQueue() { if (chunksToGenerate.Count > 0) { var isosurface = new Isosurface(density, terrainSettings.isosurfaceAlgorithm); Chunk chunk = chunksToGenerate.Dequeue(); chunk.Destroy(); chunk.CreateChunk(isosurface, spawners, terrainSettings.chunkSize); } }
/// <summary> /// Init chunk and start mesh generation /// </summary> /// <param name="isosurface"></param> /// <param name="spawners"></param> /// <param name="chunkSize"></param> public void CreateChunk(Isosurface isosurface, List <ObjectSpawner> spawners, int chunkSize) { this.isosurface = isosurface; meshBuilder = isosurface.GetMeshBuilder(transform.position, chunkSize); this.spawners = spawners; spawnedObjects = new List <PoolObject> [2]; var center = transform.position; center.x += (float)chunkSize / 2; center.y += (float)chunkSize / 2; center.z += (float)chunkSize / 2; ChunkBounds = new Bounds(center, new Vector3(chunkSize, chunkSize, chunkSize)); BuildChunk(); }