diff options
Diffstat (limited to 'src/World/World.hpp')
| -rw-r--r-- | src/World/World.hpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/World/World.hpp b/src/World/World.hpp index 03ed517..e6b3cd2 100644 --- a/src/World/World.hpp +++ b/src/World/World.hpp @@ -31,23 +31,38 @@ public: std::vector<ChunkData*> get_visible_chunks(Vector<3> position); Chunk* get_chunk_for_position(Vector<3> position); + + float get_average_chunk_time(); private: std::unordered_set<ChunkIndex> get_visible_chunk_indices(Vector<3> position) const; std::unordered_set<ChunkIndex> load_finished_chunks_from_queue(); void process_chunk_visibility_updates(std::unordered_set<ChunkIndex>& new_chunks, Vector<3> player); void request_generation(ChunkIndex index, float priority); + void try_to_create_mesh_for_chunk(ChunkData& data); + + void log_chunk_time(uint64_t chunk_time_ms); ChunkData& get(ChunkIndex index); + static uint64_t timestamp(); + uint8_t m_view_distance_radius = 13; - Compute::Queue<Chunk, ChunkIndex> m_queue; + struct GenerationResult { + Chunk chunk; + uint64_t generation_duration; + }; + Compute::Queue<GenerationResult, ChunkIndex> m_queue; Generator m_generator; std::unordered_map<ChunkIndex, ChunkData> m_chunks; std::unordered_set<ChunkIndex> m_visible_chunks; - void try_to_create_mesh_for_chunk(ChunkData& data); + struct Statistics { + uint chunk_time_sample_count; + float average_chunk_time_ms; + }; + Statistics m_statistics{0, 0.0f}; }; } |
