From 95c85382030af78854a42d457fbb259e6078402b Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Mon, 6 Nov 2017 18:01:19 +0500 Subject: Section parser now in a separate file --- src/RendererSectionData.hpp | 46 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/RendererSectionData.hpp (limited to 'src/RendererSectionData.hpp') diff --git a/src/RendererSectionData.hpp b/src/RendererSectionData.hpp new file mode 100644 index 0000000..54b6eea --- /dev/null +++ b/src/RendererSectionData.hpp @@ -0,0 +1,46 @@ +#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]; + } +}; -- cgit v1.2.3