X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fchunk.cpp;h=66b049f00366e1ea4a91cb2f0f69d7b200c3d48b;hb=32a2a1231de8438f8408007c41247361b1c52417;hp=d298fb2640cd737f586aa1ad09ec09ac0ef00b8a;hpb=3072e2cd49ad1614100d1a1c73afe6a4888fb875;p=blank.git diff --git a/src/chunk.cpp b/src/chunk.cpp index d298fb2..66b049f 100644 --- a/src/chunk.cpp +++ b/src/chunk.cpp @@ -263,6 +263,21 @@ int Chunk::GetLight(int index) const { } +bool Chunk::IsSurface(const Pos &pos) const { + const Block &block = BlockAt(pos); + if (!Type(block).visible) { + return false; + } + for (int face = 0; face < Block::FACE_COUNT; ++face) { + const Block *next = FindNext(pos, Block::Face(face)); + if (!next || !Type(*next).visible) { + return true; + } + } + return false; +} + + void Chunk::Allocate() { blocks.resize(Size(), Block(0)); light.resize(Size(), 0); @@ -462,8 +477,8 @@ ChunkLoader::ChunkLoader(const BlockTypeRegistry ®, const Generator &gen) , loaded() , to_generate() , to_free() -, load_dist(4) -, unload_dist(5) { +, load_dist(6) +, unload_dist(8) { } @@ -603,8 +618,12 @@ void ChunkLoader::Rebase(const Chunk::Pos &new_base) { } } // add missing new chunks + GenerateSurrounding(base); +} + +void ChunkLoader::GenerateSurrounding(const Chunk::Pos &pos) { const Chunk::Pos offset(load_dist, load_dist, load_dist); - Generate(base - offset, base + offset); + Generate(pos - offset, pos + offset); } void ChunkLoader::Update() {