2.0
[tar-legacy.git] / MCDV / IRenderable.hpp
1 #pragma once
2 #include <glm\glm.hpp>
3 #include <glm\gtc\matrix_transform.hpp>
4 #include <glm\gtc\type_ptr.hpp>
5
6 #include "Shader.hpp"
7
8 class IRenderable {
9 public:
10 glm::vec3 position;
11 glm::vec3 eulerAngles;
12
13 Mesh* m_mesh = NULL;
14
15 virtual void _Draw(Shader* shader, std::vector<glm::mat4> transform_stack = {}) = 0;
16 virtual void SetupDrawable() = 0;
17
18 void Draw(Shader* shader) {
19 if (this->m_mesh == NULL) SetupDrawable();
20 this->_Draw(shader);
21 }
22 };