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.cpp25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/World/World.cpp b/src/World/World.cpp
index 2b5848b..b5dae43 100644
--- a/src/World/World.cpp
+++ b/src/World/World.cpp
@@ -5,8 +5,8 @@
 
 namespace MC::World {
 
-std::vector<ChunkRegistry::Data*> World::get_visible_chunks(Position::World position) {
-    process_chunk_updates();
+std::vector<ChunkRegistry::Data*> World::get_visible_chunks(Time const& time, Position::World position) {
+    process_chunk_updates(time);
 
     if (should_reassess_priorities(position)) {
         reassess_priorities(position);
@@ -84,22 +84,24 @@ std::vector<ChunkIndex> World::get_visible_chunk_indices(const Position::World p
     return indices;
 }
 
-void World::process_chunk_updates() {
+void World::process_chunk_updates(Time const& time) {
     auto generation_results = m_generation_queue.done();
     for (auto& [id, res] : generation_results) {
-        m_registry.get(id) = {id, ChunkRegistry::Status::NeedsReification, {res.chunk}};
+        m_registry.get(id) = {
+            id, ChunkRegistry::Status::NeedsReification,
+            time.tick(),
+            {res.chunk}
+        };
 
         log_chunk_time(res.generation_duration);
     }
 
     auto reification_results = m_reification_queue.done();
     for (auto& [id, res] : reification_results) {
-        m_registry.get(id) = {
-            id, ChunkRegistry::Status::Done,
-            {res.chunk},
-            res.chunk_mesh.land_mesh,
-            res.chunk_mesh.water_mesh
-        };
+        auto& data = m_registry.get(id);
+        data.status = ChunkRegistry::Status::Done;
+        data.land_mesh = res.chunk_mesh.land_mesh;
+        data.water_mesh = res.chunk_mesh.water_mesh;
 
         // TODO: Damage surrounding chunks.
     }
@@ -124,8 +126,7 @@ void World::request_reification(ChunkIndex index, Real priority) {
         intitial_lighting.add_chunk(chunk);
         intitial_lighting.illuminate(chunk);
 
-        auto meshes = Generation::ChunkMeshing::mesh_chunk(chunk, meshing_context);
-        return {chunk, meshes};
+        return {Generation::ChunkMeshing::mesh_chunk(chunk, meshing_context)};
     });
 }