#pragma once

#include "VoxelProgram.hpp"

namespace pass {
    /// Instanced voxels pass
    class EntityProgram: public VoxelProgram {
    public:
        EntityProgram(const options &opts);
        ~EntityProgram();

        static constexpr auto LOCATION = 6;

        void setup(const std::vector<glm::mat4> &modelsMatrices);
        void disable();

    protected:
        void setModels(const GLfloat *matrices, size_t count);

    private:
        GLuint ModelsBufferID = 0;
        size_t ModelBufferSize = 0;
    };
}