X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fchunk.hpp;h=e27cf5ed09d5b3e6a9b018e5bd1b4ca927450a47;hb=a58c4558e7d4934f4d0ee621520acfe1c8258c93;hp=61303aad02280f102c7d3d14a3175e2b8c73a67d;hpb=374843f5b3ae60c0d02704a8da5100ac8abe7f1a;p=blank.git diff --git a/src/chunk.hpp b/src/chunk.hpp index 61303aa..e27cf5e 100644 --- a/src/chunk.hpp +++ b/src/chunk.hpp @@ -52,6 +52,17 @@ public: ); } + static constexpr bool IsBorder(int idx) { + return + idx < Width() * Height() || + (idx / Width()) % Height() == 0 || + (idx / Width()) % Height() == Height() - 1 || + (idx / (Width() * Height())) == Depth() - 1; + } + + // check if block at given index is completely enclosed (and therefore invisible) + bool Obstructed(int idx) const; + void Allocate(); void Invalidate() { dirty = true; } @@ -101,8 +112,8 @@ public: std::list &Loaded() { return loaded; } Chunk *Loaded(const Chunk::Pos &); - Chunk *Queued(const Chunk::Pos &); - Chunk *Known(const Chunk::Pos &); + bool Queued(const Chunk::Pos &); + bool Known(const Chunk::Pos &); Chunk &ForceLoad(const Chunk::Pos &); void Rebase(const Chunk::Pos &); @@ -115,7 +126,7 @@ private: const Generator &gen; std::list loaded; - std::list to_generate; + std::list to_generate; std::list to_free; int load_dist;