X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fchunk.cpp;h=14930863ed1c38063fc2e919563dae0f5c7d1a6b;hb=b4995967309bf5570161db2287e27b84ca94ab9a;hp=16ff4e5023bb65f4f68495294b7b940007b67239;hpb=a58c4558e7d4934f4d0ee621520acfe1c8258c93;p=blank.git diff --git a/src/chunk.cpp b/src/chunk.cpp index 16ff4e5..1493086 100644 --- a/src/chunk.cpp +++ b/src/chunk.cpp @@ -82,8 +82,7 @@ bool Chunk::Intersection( } float cur_dist; glm::vec3 cur_norm; - Block::Pos pos(float(x) + 0.5f, float(y) + 0.5f, float(z) + 0.5f); - if (Type(blocks[id]).shape->Intersects(ray, glm::translate(M, pos), cur_dist, cur_norm)) { + if (Type(blocks[id]).shape->Intersects(ray, M * ToTransform(id), cur_dist, cur_norm)) { if (cur_dist < closest_dist) { closest_id = id; closest_dist = cur_dist; @@ -140,7 +139,7 @@ void Chunk::Update() { if (Obstructed(i)) continue; const BlockType &type = Type(blocks[i]); - type.FillModel(buf, ToCoords(i), vtx_counter); + type.FillModel(buf, ToTransform(i), vtx_counter); vtx_counter += type.shape->VertexCount(); } @@ -176,6 +175,10 @@ bool Chunk::Obstructed(int idx) const { return true; } +glm::mat4 Chunk::ToTransform(int idx) const { + return glm::translate(glm::mat4(1.0f), ToCoords(idx)) * blocks[idx].Transform(); +} + ChunkLoader::ChunkLoader(const BlockTypeRegistry ®, const Generator &gen) : base(0, 0, 0)