#include "model.hpp"

#include "mesh.hpp"
#include "program.hpp"
#include "material.hpp"
#include "geometry/transform.hpp"

#include <cassert>


using namespace frog::geo;


// void frog::gl::model::draw(program& pr) const
// {
//     mat.send(pr, location::Material);

//     auto mat = matrix();
//     pr.uniform_mat(mat, location::ModelMatrix);

//     assert(mesh_ptr != nullptr);
//     mesh_ptr->draw();
// }


mat4 frog::gl::model::matrix() const
{
    mat4 res{ 1 };
    for (int axis : { 2, 0, 1 })    // z, x, y
    {
        res = rotate(axis, rot[axis]) * res;
    }
    return translate(pos) * res;
}
