From 2eef7cf49b7a15559ee7bb6719411bcf67386213 Mon Sep 17 00:00:00 2001 From: Mel Date: Sat, 22 Jul 2023 17:35:00 +0200 Subject: Propagation in lighting system --- src/World/World.hpp | 37 +++++++------------------------------ 1 file changed, 7 insertions(+), 30 deletions(-) (limited to 'src/World/World.hpp') diff --git a/src/World/World.hpp b/src/World/World.hpp index 3635d8a..db9d0db 100644 --- a/src/World/World.hpp +++ b/src/World/World.hpp @@ -1,12 +1,10 @@ #pragma once -#include -#include -#include #include "Generation/Generator.hpp" #include "ChunkIndex.hpp" -#include "../GFX/Binder.hpp" +#include "ChunkRegistry.hpp" #include "../Compute/Queue.hpp" +#include "Generation/Lighting.hpp" namespace MC::World { @@ -14,39 +12,18 @@ class World { public: World() : m_queue(8) {} - enum class ChunkStatus { - Empty, - WaitingForGeneration, - WaitingForReification, - Done - }; - - struct ChunkData { - ChunkIndex index; - ChunkStatus status; - std::optional chunk = {}; - - std::optional land_mesh_data = {}; - std::optional water_mesh_data = {}; - - std::optional land_mesh = {}; - std::optional water_mesh = {}; - }; - - std::vector get_visible_chunks(Vector<3> position); - Chunk* get_chunk_for_position(Vector<3> position); + std::vector get_visible_chunks(Vector<3> position); Real get_average_chunk_time() const; private: std::vector get_visible_chunk_indices(Vector<3> position) const; + void load_finished_chunks_from_queue(); void request_generation(ChunkIndex index, Real priority); - void try_to_reify_chunk(ChunkData& data); + void try_to_reify_chunk(ChunkRegistry::Data& data); void log_chunk_time(U64 chunk_time_ms); - ChunkData& get(ChunkIndex index); - U8 m_view_distance_radius = 10; struct GenerationResult { @@ -55,8 +32,8 @@ private: }; Compute::Queue m_queue; Generation::Generator m_generator; - - std::unordered_map m_chunks; + Generation::Lighting m_lighting; + ChunkRegistry m_registry; struct Statistics { UInt chunk_time_sample_count; -- cgit 1.4.1