]> git.localhorst.tv Git - blank.git/blobdiff - src/world/World.cpp
show camera position in debug overlay
[blank.git] / src / world / World.cpp
index 94cd092f88c03a7fd40562342231e06c6bb00dfc..97dcc0848a40a7936179ee7e4171aac8c29f1fd1 100644 (file)
@@ -1,8 +1,7 @@
 #include "World.hpp"
 
 #include "WorldCollision.hpp"
-#include "../graphics/BlockLighting.hpp"
-#include "../graphics/DirectionalLighting.hpp"
+#include "../graphics/Viewport.hpp"
 
 #include <iostream>
 #include <limits>
@@ -295,10 +294,11 @@ void World::Resolve(Entity &e, std::vector<WorldCollision> &col) {
 }
 
 
-void World::Render(BlockLighting &chunk_prog, DirectionalLighting &entity_prog) {
-       chunk_prog.Activate();
+void World::Render(Viewport &viewport) {
+       viewport.WorldPosition(player->Transform(player->ChunkCoords()));
+
+       BlockLighting &chunk_prog = viewport.ChunkProgram();
        chunk_prog.SetFogDensity(fog_density);
-       chunk_prog.SetView(glm::inverse(player->Transform(player->ChunkCoords())));
 
        for (Chunk &chunk : chunks.Loaded()) {
                glm::mat4 m(chunk.Transform(player->ChunkCoords()));
@@ -309,10 +309,9 @@ void World::Render(BlockLighting &chunk_prog, DirectionalLighting &entity_prog)
                }
        }
 
-       entity_prog.Activate();
+       DirectionalLighting &entity_prog = viewport.EntityProgram();
        entity_prog.SetLightDirection(light_direction);
        entity_prog.SetFogDensity(fog_density);
-       entity_prog.SetView(glm::inverse(player->Transform(player->ChunkCoords())));
 
        for (Entity &entity : entities) {
                if (entity.HasShape()) {