diff options
Diffstat (limited to 'src/World/World.hpp')
| -rw-r--r-- | src/World/World.hpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/World/World.hpp b/src/World/World.hpp index 92367f6..e3b08f5 100644 --- a/src/World/World.hpp +++ b/src/World/World.hpp @@ -21,6 +21,9 @@ private: void request_generation(ChunkIndex index, Real priority); void request_reification(ChunkIndex index, Real priority); + Bool should_reassess_priorities(Position::World player_position) const; + void reassess_priorities(Position::World player_position); + enum class RequestType { Initial, Update }; static Real calculate_priority(ChunkIndex chunk, Position::World player_position, RequestType request_type); @@ -28,16 +31,24 @@ private: U8 m_view_distance_radius = 12; + Bool is_chunk_in_radius(Position::World position, ChunkIndex chunk) const; + struct GenerationResult { Chunk chunk; U64 generation_duration; }; - Compute::Queue<GenerationResult, ChunkIndex> m_generation_queue{4}; + using GenerationQueue = Compute::Queue<GenerationResult, ChunkIndex>; + GenerationQueue m_generation_queue{4}; + struct ReificationResult { Chunk chunk; Generation::ChunkMeshing::ChunkMesh chunk_mesh; }; - Compute::Queue<ReificationResult, ChunkIndex> m_reification_queue{4}; + using ReificationQueue = Compute::Queue<ReificationResult, ChunkIndex>; + ReificationQueue m_reification_queue{4}; + + Real m_priority_reassession_distance_threshold = 50; + Position::World m_last_priority_reassession_at = {}; Generation::Generator m_generator; Generation::Lighting m_lighting; |
