32 lines
660 B
C++
32 lines
660 B
C++
#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
|
|
};
|
|
|
|
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;
|
|
}; |