#pragma once #include #include #include #include "Block.hpp" #include "Vector.hpp" class World; class BlockModel; struct RendererSectionData { std::vector models; std::vector textures; std::vector colors; std::vector lights; size_t hash; Vector sectionPos; RendererSectionData(World *world, Vector sectionPosition); ~RendererSectionData() = default; RendererSectionData(RendererSectionData &&other) = default; private: void AddFacesByBlockModel(const std::vector §ionsList, World *world, Vector blockPos, const BlockModel &model, glm::mat4 transform, unsigned char light, unsigned char skyLight, const std::array& visibility); std::array GetBlockVisibilityData(World *world); std::vector> idModels; const BlockModel* GetInternalBlockModel(const BlockId& id); std::array blockIdData; void SetBlockIdData(World *world); inline const BlockId& GetBlockId(const Vector& pos) { return blockIdData[pos.y * 256 + pos.z * 16 + pos.x]; } inline const BlockId& GetBlockId(int x, int y, int z) { return blockIdData[y * 256 + z * 16 + x]; } };