#pragma once #include "GL/glew.h" #include "glm/gtc/type_ptr.hpp" #include "Loader.h" #include "ModelView.h" enum DrawableType { COLOR_CUBE, CHECKERED_FLOOR, WIRE_CUBE, LINE_SEGMENT, SPHERE, TEAPOT, LOADED_MESH, LIGHTED_PLANE }; class IDrawable { public: virtual void addRotation(glm::vec4 vec) = 0; virtual void addTranslation(glm::vec4 vec) = 0; virtual void addScaling(glm::vec4 vec) = 0; virtual void removeLastTransformations(int n) = 0; virtual glm::vec3 getPosition() = 0; virtual glm::vec4 translateToPivot(glm::vec3) = 0; virtual void draw(ShaderProgram *shader, glm::mat4x4 proj_matrix, glm::mat4x4 view_matrix) = 0; virtual DrawableType getType() = 0; };