Exemplo n.º 1
0
    void LoadChunkColumnInner(BlockPos columnPosition)
    {
        Chunk chunk;

        if (Config.Toggle.UseMultiThreading)
        {
            for (int y = Config.Env.WorldMaxY; y >= Config.Env.WorldMinY; y -= Config.Env.ChunkSize)
            {
                for (int x = -Config.Env.ChunkSize; x <= Config.Env.ChunkSize; x += Config.Env.ChunkSize)
                {
                    for (int z = -Config.Env.ChunkSize; z <= Config.Env.ChunkSize; z += Config.Env.ChunkSize)
                    {
                        chunk = world.GetChunk(columnPosition.Add(x, y, z));
                        while (!chunk.terrainGenerated)
                        {
                            Thread.Sleep(0);
                        }
                    }
                }
            }
        }

        //Render chunk
        for (int y = Config.Env.WorldMaxY; y >= Config.Env.WorldMinY; y -= Config.Env.ChunkSize)
        {
            chunk = world.GetChunk(columnPosition.Add(0, y, 0));

            if (Config.Toggle.LightSceneOnStart)
            {
                BlockLight.FloodLightChunkColumn(world, chunk);
            }

            chunk.UpdateChunk();
        }
    }
Exemplo n.º 2
0
    void LoadChunkColumnInner(BlockPos columnPosition)
    {
        Chunk chunk;

        // Terrain generation can happen in another thread meaning that we will reach this point before the
        //thread completes, we need to wait for all the chunks we depend on to finish generating before we
        //can calculate any light spread or render the chunk
        if (Config.Toggle.UseMultiThreading)
        {
            for (int y = Config.Env.WorldMaxY; y >= Config.Env.WorldMinY; y -= Config.Env.ChunkSize)
            {
                for (int x = -Config.Env.ChunkSize; x <= Config.Env.ChunkSize; x += Config.Env.ChunkSize)
                {
                    for (int z = -Config.Env.ChunkSize; z <= Config.Env.ChunkSize; z += Config.Env.ChunkSize)
                    {
                        chunk = world.GetChunk(columnPosition.Add(x, y, z));
                        while (!chunk.terrainGenerated)
                        {
                            Thread.Sleep(0);
                        }
                    }
                }
            }
        }

        //Render chunk
        for (int y = Config.Env.WorldMaxY; y >= Config.Env.WorldMinY; y -= Config.Env.ChunkSize)
        {
            chunk = world.GetChunk(columnPosition.Add(0, y, 0));

            if (Config.Toggle.LightSceneOnStart)
            {
                BlockLight.FloodLightChunkColumn(world, chunk);
            }

            chunk.UpdateChunk();
        }
    }