]> git.localhorst.tv Git - blank.git/blobdiff - src/world.cpp
use player-relative coordinates for rendering
[blank.git] / src / world.cpp
index d115378f10b6926e771e65eb9fad34d6ccdb44e1..216f3a2d007916ae902747d8eee5b4b8b2470108 100644 (file)
@@ -13,6 +13,7 @@ World::World()
 , slabShape({{ -0.5f, -0.5f, -0.5f }, { 0.5f, 0.0f, 0.5f }})
 , blockNoise(0)
 , colorNoise(1)
+, player()
 , loaded()
 , to_generate() {
        blockType.Add(BlockType{ true, { 1.0f, 1.0f, 1.0f }, &blockShape }); // white block
@@ -101,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;
@@ -159,10 +160,10 @@ 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());
+               program.SetM(chunk.Transform(player.ChunkCoords()));
                chunk.Draw();
        }
 }