diff options
Diffstat (limited to 'src/World/World.hpp')
| -rw-r--r-- | src/World/World.hpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/World/World.hpp b/src/World/World.hpp index a5f73ec..03ed517 100644 --- a/src/World/World.hpp +++ b/src/World/World.hpp @@ -12,11 +12,12 @@ namespace MC::World { class World { public: - World() : m_queue(8), m_chunks(), m_visible_chunks() {} + World() : m_queue(8) {} enum class ChunkStatus { Empty, WaitingForGeneration, + NeedsMesh, Done }; @@ -24,11 +25,12 @@ public: ChunkIndex index; ChunkStatus status; std::optional<Chunk> chunk = {}; + std::optional<GFX::Mesh> mesh_data = {}; std::optional<GFX::BindableMesh> mesh = {}; }; - std::vector<ChunkData> get_visible_chunks(Vector<3> position); - Chunk* get_chunk_for_positon(Vector<3> position); + std::vector<ChunkData*> get_visible_chunks(Vector<3> position); + Chunk* get_chunk_for_position(Vector<3> position); private: std::unordered_set<ChunkIndex> get_visible_chunk_indices(Vector<3> position) const; std::unordered_set<ChunkIndex> load_finished_chunks_from_queue(); @@ -37,13 +39,15 @@ private: ChunkData& get(ChunkIndex index); - uint8_t m_view_distance_radius = 12; + uint8_t m_view_distance_radius = 13; Compute::Queue<Chunk, 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); }; } |
