#ifndef PGHP_OBJECT_H
#define PGHP_OBJECT_H

#include <map>

#include "mesh.h"
#include "shader.h"
#include "camera.h"

using namespace Eigen;

class Object
{
public:
  Object();
  void attachMesh(Mesh *mesh);
  void attachShader(const Shader* shader);
  void setScale(float s);
  void setRotation(const Affine3f &r);
  void setTranslation(const Translation3f& t);
  void setId(float id);
  void draw();

  // type 0 = normal
  // type 1 = texture
  // type 2 = color
  void setRenderType(int type);

protected:
  const Shader* _shader;
  Mesh* _geometry;
  int _renderType;
  float _id;

public:
  Affine3f _transformation;
};

#endif //OBJECT_H
