diff options
| author | Mel <einebeere@gmail.com> | 2024-02-12 13:01:15 +0100 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2024-02-12 13:01:15 +0100 |
| commit | 6a30c3e4f22de4d0f8f32107f614f597f5f39cc1 (patch) | |
| tree | a4e45ac6c5c728266eef1b42099494854744d497 /src/World/World.cpp | |
| parent | d2b5fc5b3bc648afffa42375706429685ac63794 (diff) | |
| download | meowcraft-6a30c3e4f22de4d0f8f32107f614f597f5f39cc1.tar.zst meowcraft-6a30c3e4f22de4d0f8f32107f614f597f5f39cc1.zip | |
Rescue player from void if current chunk wasn't generated prior
Diffstat (limited to 'src/World/World.cpp')
| -rw-r--r-- | src/World/World.cpp | 25 |
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)}; }); } |
