X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2Fchunk.cpp;h=77899e79d5da360506502ae8954e54bf56648a3c;hb=39df551265bff648c1ac166043bb4b046122cc8d;hp=c421be9d679fa45e0e715ab2c2feeddf7b3230cf;hpb=695918769a616db82dbebb987ea91f3204dee8a9;p=blank.git diff --git a/src/world/chunk.cpp b/src/world/chunk.cpp index c421be9..77899e7 100644 --- a/src/world/chunk.cpp +++ b/src/world/chunk.cpp @@ -319,7 +319,7 @@ int Chunk::GetLight(int index) const noexcept { return light[index]; } -float Chunk::GetVertexLight(const Pos &pos, const BlockModel::Position &vtx, const Model::Normal &norm) const noexcept { +float Chunk::GetVertexLight(const Pos &pos, const BlockModel::Position &vtx, const EntityModel::Normal &norm) const noexcept { int index = ToIndex(pos); float light = GetLight(index); @@ -842,9 +842,20 @@ void ChunkLoader::Update(int dt) { // check if a chunk generation is scheduled for this frame // and if there's a chunk waiting to be generated gen_timer.Update(dt); - if (!gen_timer.Hit() || to_generate.empty()) { - return; + if (gen_timer.Hit()) { + LoadOne(); + } +} + +void ChunkLoader::LoadN(std::size_t n) { + std::size_t end = std::min(n, ToLoad()); + for (std::size_t i = 0; i < end; ++i) { + LoadOne(); } +} + +void ChunkLoader::LoadOne() { + if (to_generate.empty()) return; // take position of next chunk in queue Chunk::Pos pos(to_generate.front());