X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fchunk.hpp;h=ae773657ad3a6925f20556c7b922bf5428bde770;hb=1b022dd17364c9e3344afd86572f2ead14973cde;hp=e27cf5ed09d5b3e6a9b018e5bd1b4ca927450a47;hpb=a58c4558e7d4934f4d0ee621520acfe1c8258c93;p=blank.git diff --git a/src/chunk.hpp b/src/chunk.hpp index e27cf5e..ae77365 100644 --- a/src/chunk.hpp +++ b/src/chunk.hpp @@ -51,13 +51,16 @@ public: 0.5f + (idx / (Width() * Height())) ); } + glm::mat4 ToTransform(int idx) const; static constexpr bool IsBorder(int idx) { return - idx < Width() * Height() || - (idx / Width()) % Height() == 0 || - (idx / Width()) % Height() == Height() - 1 || - (idx / (Width() * Height())) == Depth() - 1; + idx < Width() * Height() || // low Z plane + idx % Width() == 0 || // low X plane + (idx / (Width() * Height())) == Depth() - 1 || // high Z plane + idx % Width() == Width() - 1 || // high X plane + (idx / Width()) % Height() == 0 || // low Y plane + (idx / Width()) % Height() == Height() - 1; // high Y plane } // check if block at given index is completely enclosed (and therefore invisible) @@ -73,12 +76,20 @@ public: const BlockType &Type(const Block &b) const { return *types->Get(b.type); } + bool Intersection( + const Ray &ray, + const glm::mat4 &M, + float &dist + ) const { + return blank::Intersection(ray, Bounds(), M, &dist); + } + bool Intersection( const Ray &, const glm::mat4 &M, - int *blkid = nullptr, - float *dist = nullptr, - glm::vec3 *normal = nullptr) const; + int &blkid, + float &dist, + glm::vec3 &normal) const; void Position(const Pos &); const Pos &Position() const { return position; }