示例#1
0
        public void ProvideChunk(int x, int z, Chunk chunk, bool recalculate)
        {
            InitGen();

            byte[] data = new byte[32768];
            Stopwatch watch = new Stopwatch();
            watch.Start();
            GenerateTerrain(chunk, data, x, z);
            GenerateFlora(chunk, data, x, z);
            chunk.SetAllBlocks(data);
            watch.Stop();
            if(recalculate)
                chunk.Recalculate();

            Console.WriteLine("Chunk {0} {1}, {2}", x, z, watch.ElapsedMilliseconds);

            //chunk.Save();
            _World.AddChunk(chunk);
            chunk.MarkToSave();
        }
示例#2
0
        public Chunk ProvideChunk(int x, int z, WorldManager world)
        {
            Chunk chunk = new Chunk(world, UniversalCoords.FromChunk(x, z));
            InitGen();

            byte[] data = new byte[32768];
            #if PROFILE
            Stopwatch watch = new Stopwatch();
            watch.Start();
            #endif
            GenerateTerrain(chunk, data, x, z);
            GenerateFlora(chunk, data, x, z);
            chunk.SetAllBlocks(data);

            chunk.RecalculateHeight();
            chunk.LightToRecalculate = true;
            #if PROFILE
            watch.Stop();

            _World.Logger.Log(Logger.LogLevel.Info, "Chunk {0} {1}, {2}", false, x, z, watch.ElapsedMilliseconds);
            #endif

            _World.AddChunk(chunk);
            chunk.MarkToSave();

            return chunk;
        }