summary refs log tree commit diff
path: root/src/World/World.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/World/World.cpp')
-rw-r--r--src/World/World.cpp17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/World/World.cpp b/src/World/World.cpp
index 8685e8a..912a5cf 100644
--- a/src/World/World.cpp
+++ b/src/World/World.cpp
@@ -1,5 +1,6 @@
 #include "World.hpp"
 #include "Generation/ChunkMeshing.hpp"
+#include "Generation/Lighting.hpp"
 #include "../Time.hpp"
 
 namespace MC::World {
@@ -19,8 +20,8 @@ std::vector<World::ChunkData*> World::get_visible_chunks(Vector<3> position) {
             continue;
         }
 
-        if (data.status == ChunkStatus::NeedsMesh) {
-            try_to_create_mesh_for_chunk(data);
+        if (data.status == ChunkStatus::WaitingForReification) {
+            try_to_reify_chunk(data);
         }
         if (data.status == ChunkStatus::Done) {
             chunks.push_back(&data);
@@ -65,7 +66,7 @@ std::vector<ChunkIndex> World::get_visible_chunk_indices(const Vector<3> positio
 void World::load_finished_chunks_from_queue() {
     auto results = m_queue.done();
     for (auto& [id, res] : results) {
-        get(id) = {id, ChunkStatus::NeedsMesh, {res.chunk}};
+        get(id) = {id, ChunkStatus::WaitingForReification, {res.chunk}};
         log_chunk_time(res.generation_duration);
     }
 }
@@ -90,7 +91,7 @@ World::ChunkData& World::get(ChunkIndex index) {
     return entry->second;
 }
 
-void World::try_to_create_mesh_for_chunk(ChunkData& data) {
+void World::try_to_reify_chunk(ChunkData& data) {
     auto index = data.index;
 
     UInt neighbor_index = 0;
@@ -109,12 +110,16 @@ void World::try_to_create_mesh_for_chunk(ChunkData& data) {
     // Layout of neighboring chunks in `neighbors` array:
     // (-1; -1) > (-1;  0) > (-1; 1) > (0; -1)
     // ( 0;  1) > ( 1; -1) > ( 1; 0) > (1;  1)
-    Generation::ChunkMeshing::ChunkNeighbors chunk_neighbors {
+    Generation::ChunkNeighbors chunk_neighbors {
         neighbors[3], neighbors[6], neighbors[4], neighbors[1],
         neighbors[5], neighbors[7], neighbors[2], neighbors[0],
     };
 
-    auto meshes = mesh_chunk(data.chunk.value(), chunk_neighbors);
+    // Lighting
+    Generation::Lighting::light_chunk(data.chunk.value(), chunk_neighbors);
+
+    // Meshing
+    auto meshes = Generation::ChunkMeshing::mesh_chunk(data.chunk.value(), chunk_neighbors);
 
     data.land_mesh_data = meshes.land_mesh;
     data.land_mesh = GFX::Binder::load(data.land_mesh_data.value());