#pragma once #include #include #include #include "MainBatch.hpp" #include "typedefs.hpp" class Assets; class Player; class Level; class DrawContext; struct BlockWrapper { glm::ivec3 position; std::string texture; }; class BlockWrapsRenderer { const Assets& assets; const Level& level; std::unique_ptr batch; std::unordered_map> wrappers; u64id_t nextWrapper = 1; void draw(const BlockWrapper& wrapper); public: BlockWrapsRenderer(const Assets& assets, const Level& level); ~BlockWrapsRenderer(); void draw(const DrawContext& ctx, const Player& player); u64id_t add(const glm::ivec3& position, const std::string& texture); BlockWrapper* get(u64id_t id) const; void remove(u64id_t id); };