#pragma once #include #include #include #include #include #include #include "AssetManager.hpp" #include "Section.hpp" #include "World.hpp" #include "Vector.hpp" #include "Renderer.hpp" struct RendererSectionData { std::vector models; std::vector textures; std::vector colors; size_t hash; Vector sectionPos; RendererSectionData(World *world, Vector sectionPosition); }; class RendererSection { GLuint Vao, VboTextures, VboModels, VboColors; static GLuint VboVertices, VboUvs; static std::map refCounterVbo; static std::map refCounterVao; size_t hash; Vector sectionPos; public: RendererSection(RendererSectionData data); RendererSection(const RendererSection &other); ~RendererSection(); void Render(RenderState &renderState); Vector GetPosition(); size_t GetHash(); size_t numOfFaces = 0; };