]> git.localhorst.tv Git - blank.git/blobdiff - src/chunk.cpp
fix normal generated by chunk intersection test
[blank.git] / src / chunk.cpp
index fbee721c601b4fb0451f17ef72ef43f1b6f3599f..f43f8fd524582525a08d0f915e1e7d9d02db752e 100644 (file)
@@ -104,7 +104,7 @@ bool Chunk::Intersection(
                *dist = closest_dist;
        }
        if (normal) {
-               *normal = closest_normal;
+               *normal = glm::vec3(BlockAt(closest_id).Transform() * glm::vec4(closest_normal, 0.0f));
        }
        return true;
 }
@@ -160,11 +160,11 @@ bool Chunk::Obstructed(int idx) const {
        const BlockType &left = Type(blocks[idx - 1]);
        if (!left.fill.right) return false;
 
-       const BlockType &top = Type(blocks[idx + Width()]);
-       if (!top.fill.bottom) return false;
+       const BlockType &up = Type(blocks[idx + Width()]);
+       if (!up.fill.down) return false;
 
-       const BlockType &bottom = Type(blocks[idx - Width()]);
-       if (!bottom.fill.top) return false;
+       const BlockType &down = Type(blocks[idx - Width()]);
+       if (!down.fill.up) return false;
 
        const BlockType &front = Type(blocks[idx + Width() * Height()]);
        if (!front.fill.back) return false;