// Create Body Class
#include <vector>
#include "MatrixStack.h"
#include <glm/glm.hpp>
#include <memory>
#include "Shape.h"
#include "Program.h"
#include "Material.h"

using namespace std;
using namespace glm;

class Component
{
  public:
    Component *parent;
    vector<Component> children;
    bool selected;
    vec3 t;
    vec3 tp;
    vec3 r;
    vec3 s;
    shared_ptr<Shape> shape; // used for storing which shape to render
    Material material;
    vec3 center;

    Component();
    Component(const Component& c);
    Component& getNext(Component *addr);
    void draw(shared_ptr<MatrixStack> MV, shared_ptr<MatrixStack> P, shared_ptr<Program> Prog);
    Component& getPrevious(Component *addr);
    Component& getLastChild();
};
