#ifndef GRAPHICS_RENDER_CHUNKSRENDERER_HPP_ #define GRAPHICS_RENDER_CHUNKSRENDERER_HPP_ #include #include #include #include #include #include "../../voxels/Block.h" #include "../../voxels/ChunksStorage.h" #include "../../util/ThreadPool.hpp" #include "../../settings.h" class Mesh; class Chunk; class Level; class BlocksRenderer; class ContentGfxCache; struct RendererResult { glm::ivec2 key; BlocksRenderer* renderer; }; class ChunksRenderer { Level* level; std::unique_ptr renderer; std::unordered_map> meshes; std::unordered_map inwork; util::ThreadPool threadPool; public: ChunksRenderer( Level* level, const ContentGfxCache* cache, const EngineSettings& settings ); virtual ~ChunksRenderer(); std::shared_ptr render(std::shared_ptr chunk, bool important); void unload(const Chunk* chunk); std::shared_ptr getOrRender(std::shared_ptr chunk, bool important); std::shared_ptr get(Chunk* chunk); void update(); }; #endif // GRAPHICS_RENDER_CHUNKSRENDERER_HPP_