예제 #1
0
 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);
     }
 }
예제 #2
0
        /// <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();
        }