#include "pw/core/mesh.hpp"


namespace pw {

void mesh::apply(const matrix4x4 &m)
{
    for (auto &v : _vertices)
		v = vector4(m * v.homogenous()).project();
}

void mesh::bounds() const
{
	vector3 max_vec = _vertices.front(),min_vec = _vertices.front();
	// compute the AABB
	for (auto const & v : _vertices) {
		max_vec.x() = std::max(v.x(),max_vec.x());
		max_vec.y() = std::max(v.y(),max_vec.y());
		max_vec.z() = std::max(v.z(),max_vec.z());
		min_vec.x() = std::min(v.x(),min_vec.x());
		min_vec.y() = std::min(v.y(),min_vec.y());
		min_vec.z() = std::min(v.z(),min_vec.z());
	}
}


}
