]> git.localhorst.tv Git - blank.git/blobdiff - src/chunk.hpp
fix error in border block calculation
[blank.git] / src / chunk.hpp
index e27cf5ed09d5b3e6a9b018e5bd1b4ca927450a47..ae773657ad3a6925f20556c7b922bf5428bde770 100644 (file)
@@ -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; }