#ifndef VOXELS_CHUNKSCONTROLLER_H_ #define VOXELS_CHUNKSCONTROLLER_H_ #include #include "../typedefs.h" class Level; class Chunk; class Chunks; class Lighting; class WorldGenerator; /// @brief ChunksController manages chunks dynamic loading/unloading class ChunksController { private: Level* level; Chunks* chunks; Lighting* lighting; uint padding; std::unique_ptr generator; /// @brief Process one chunk: load it or calculate lights for it bool loadVisible(); bool buildLights(std::shared_ptr chunk); void createChunk(int x, int y); public: ChunksController(Level* level, uint padding); ~ChunksController(); /// @param maxDuration milliseconds reserved for chunks loading void update(int64_t maxDuration); }; #endif /* VOXELS_CHUNKSCONTROLLER_H_ */