#pragma once #include #include "typedefs.hpp" 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(const 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, int loadDistance, int centerX, int centerY); const WorldGenerator* getGenerator() const { return generator.get(); } };