X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld.cpp;h=7f30d71efc1930d9658c5b2633038499c6c62e7b;hb=4a21e9e32525fe23915db97f3439cae780994118;hp=0121a98a83e36ed13a87b48b93fe06d688665ebb;hpb=cb959294a8271969ddfe411471d7f04e82c4788a;p=blank.git diff --git a/src/world.cpp b/src/world.cpp index 0121a98..7f30d71 100644 --- a/src/world.cpp +++ b/src/world.cpp @@ -102,7 +102,7 @@ bool World::Intersection( int cur_blkid; float cur_dist; glm::vec3 cur_normal; - if (cur_chunk.Intersection(ray, M * cur_chunk.Transform(), &cur_blkid, &cur_dist, &cur_normal)) { + if (cur_chunk.Intersection(ray, M * cur_chunk.Transform(player.ChunkCoords()), &cur_blkid, &cur_dist, &cur_normal)) { if (cur_dist < closest_dist) { closest_chunk = &cur_chunk; closest_blkid = cur_blkid; @@ -160,11 +160,15 @@ void World::Update(int dt) { void World::Render(DirectionalLighting &program) { program.SetLightDirection({ -1.0f, -3.0f, -2.0f }); - program.SetView(glm::inverse(player.Transform())); + program.SetView(glm::inverse(player.Transform(player.ChunkCoords()))); for (Chunk &chunk : LoadedChunks()) { - program.SetM(chunk.Transform()); - chunk.Draw(); + glm::mat4 m(chunk.Transform(player.ChunkCoords())); + program.SetM(m); + glm::mat4 mvp(program.GetVP() * m); + if (!CullTest(Chunk::Bounds(), mvp)) { + chunk.Draw(); + } } }