#pragma once #include #include #include #include #include #include #include #include const int SECTION_WIDTH = 16; const int SECTION_LENGTH = 16; const int SECTION_HEIGHT = 16; class Section { std::vector m_palette; byte *m_dataBlocks = nullptr; size_t m_dataBlocksLen; byte *m_dataLight = nullptr; byte *m_dataSkyLight = nullptr; byte m_bitsPerBlock = 0; std::vector m_blocks; std::condition_variable parseWaiter; Section(); Vector worldPosition; public: void Parse(); Section(Vector position, byte *dataBlocks, size_t dataBlocksLength, byte *dataLight, byte *dataSky, byte bitsPerBlock, std::vector palette); ~Section(); Block &GetBlock(Vector pos); Section &operator=(Section other); friend void swap(Section &a, Section &b); Section(const Section &other); Vector GetPosition(); size_t GetHash(); };