#ifndef CUBE_H #define CUBE_H #include #include "Renderable3D.h" class Shader; class Cube : public Renderable3D { private: Point3 pos; Point3 size; Point3 rot; Point3 color; public: Cube(Point3 pos, float size); Cube(Point3 pos, Point3 size, Point3 rot); void setColor(float r, float g, float b); void render(const RenderSettings& rs) override; /* void paintGL(Shader* shader); TODO_GL glColor3f(color.x, color.y, color.z); glPushMatrix(); // 3) move to destination glTranslatef(pos.x, pos.z, pos.y); // swap yz // 2) rotate glRotatef(rot.x, 1, 0, 0); glRotatef(rot.y, 0, 0, 1); // swap yz glRotatef(rot.z, 0, 1, 0); // 1) scale glScalef(size.x, size.z, size.y); // swap yz glBegin(GL_QUADS); // bottom glNormal3f(0,-1,0); glVertex3f(+s, -s, -s); glVertex3f(+s, -s, +s); glVertex3f(-s, -s, +s); glVertex3f(-s, -s, -s); // top glNormal3f(0,+1,0); glVertex3f(-s, +s, -s); glVertex3f(-s, +s, +s); glVertex3f(+s, +s, +s); glVertex3f(+s, +s, -s); // left glNormal3f(-1,0,0); glVertex3f(-s, -s, -s); glVertex3f(-s, -s, +s); glVertex3f(-s, +s, +s); glVertex3f(-s, +s, -s); // right glNormal3f(+1,0,0); glVertex3f(+s, +s, -s); glVertex3f(+s, +s, +s); glVertex3f(+s, -s, +s); glVertex3f(+s, -s, -s); // front glNormal3f(0,0,+1); glVertex3f(+s, +s, +s); glVertex3f(-s, +s, +s); glVertex3f(-s, -s, +s); glVertex3f(+s, -s, +s); // rear glNormal3f(0,0,-1); glVertex3f(+s, -s, -s); glVertex3f(-s, -s, -s); glVertex3f(-s, +s, -s); glVertex3f(+s, +s, -s); glEnd(); glPopMatrix(); */ }; #endif // CUBE_H