From 6a30c3e4f22de4d0f8f32107f614f597f5f39cc1 Mon Sep 17 00:00:00 2001 From: Mel Date: Mon, 12 Feb 2024 13:01:15 +0100 Subject: Rescue player from void if current chunk wasn't generated prior --- src/World/World.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src/World/World.cpp') 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 World::get_visible_chunks(Position::World position) { - process_chunk_updates(); +std::vector 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 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)}; }); } -- cgit 1.4.1