#pragma once #include #include #include "Chunk.hpp" #include "ChunkIndex.hpp" #include "Position.hpp" #include "../GFX/Binder.hpp" namespace MC::World { class ChunkRegistry { public: enum class Status { Empty, WaitingForGeneration, WaitingForReification, Done }; // I think a Chunk entity should just store all this by itself... struct Data { ChunkIndex index; Status status; std::optional chunk = {}; std::optional land_mesh_data = {}; std::optional water_mesh_data = {}; std::optional land_mesh = {}; std::optional water_mesh = {}; }; Data& get(ChunkIndex index); Data& find(Position::BlockWorld pos); Data& find(ChunkIndex chunk, Position::BlockLocal pos); private: std::unordered_map m_chunks; }; }