#ifndef MY_MESH_H
#define MY_MESH_H

#include <OpenMesh/Core/IO/MeshIO.hh>
#include <OpenMesh/Core/Mesh/TriMesh_ArrayKernelT.hh>
#include <OpenMesh/Core/Geometry/VectorT.hh>
#include <QMatrix4x4>
#include <QColor>
#include <QVector3D>
#include <OpenMesh/Core/Geometry/EigenVectorT.hh>


struct MyTraits : public OpenMesh::DefaultTraits {
    using Point = Eigen::Vector3<qreal>;
    using Normal = Eigen::Vector3<qreal>;
    using Color = Eigen::Vector3<qreal>;
    VertexAttributes(OpenMesh::Attributes::Normal | OpenMesh::Attributes::Color);
    HalfedgeAttributes(OpenMesh::Attributes::PrevHalfedge);
    FaceAttributes(OpenMesh::Attributes::Normal);
    EdgeAttributes(OpenMesh::Attributes::Color);
};

class MyMesh : public OpenMesh::TriMesh_ArrayKernelT<MyTraits> {
public:
	QMatrix4x4 transform;
	std::vector<std::vector<HalfedgeHandle>> holes;
	// QColor color = {127, 127, 127};
};

typedef MyMesh::FaceHandle FaceHandle;
typedef MyMesh::VertexHandle VertexHandle;
typedef MyMesh::HalfedgeHandle HalfedgeHandle;
typedef MyMesh::EdgeHandle EdgeHandle;
typedef MyMesh::Point Point;


#endif
