#pragma once #include "typedefs.hpp" #include #include #include #include "maths/UVRegion.hpp" #include "graphics/commons/Model.hpp" class Content; class Assets; class Atlas; class Block; struct UVRegion; struct GraphicsSettings; inline constexpr int MAX_VARIANTS = 16; class ContentGfxCache { const Content& content; const Assets& assets; const GraphicsSettings& settings; // array of block sides uv regions (6 per block) std::unique_ptr sideregions; std::unordered_map models; public: ContentGfxCache( const Content& content, const Assets& assets, const GraphicsSettings& settings ); ~ContentGfxCache(); inline const UVRegion& getRegion(blockid_t id, uint8_t variant, int side) const { return sideregions[(id * 6 + side) * MAX_VARIANTS + variant]; } const model::Model& getModel(blockid_t id) const; void refresh(const Block& block, const Atlas& atlas); void refresh(); };