/* gl/box.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ // project headers #include "render/box.h" namespace render { using math::Vector3f; using math::Color; Box::Box(Vector3f const & tl, Vector3f const &br) : topleft(tl), bottomright(br) { topcolor = Color::White(); bottomcolor= Color::White() * 0.7f; radius = 1.0f; } Box::Box(const Box & other) { (*this) = other; } Box& Box::operator=(const Box &other) { bottomcolor = other.bottomcolor; topcolor = other.topcolor; topleft = other.topleft; bottomright = other.bottomright; return (*this); } void Box::draw() { using namespace gl; Vector3f v0(topleft.x, bottomright.y, bottomright.z); Vector3f v1(topleft.x, topleft.y, bottomright.z); Vector3f v2(topleft.x, topleft.y, topleft.z); Vector3f v3(topleft.x, bottomright.y, topleft.z); Vector3f v4(bottomright.x, bottomright.y, bottomright.z); Vector3f v5(bottomright.x, topleft.y, bottomright.z); Vector3f v6(bottomright.x, topleft.y, topleft.z); Vector3f v7(bottomright.x, bottomright.y, topleft.z); begin(Quads); // top color(topcolor); vertex(radius*v2); vertex(radius*v1); vertex(radius*v5); vertex(radius*v6); // sides color(bottomcolor); vertex(radius*v0); color(topcolor); vertex(radius*v1); vertex(radius*v2); color(bottomcolor); vertex(radius*v3); vertex(radius*v3); color(topcolor); vertex(radius*v2); vertex(radius*v6); color(bottomcolor); vertex(radius*v7); vertex(radius*v4); color(topcolor); vertex(radius*v5); vertex(radius*v1); color(bottomcolor); vertex(radius*v0); vertex(radius*v7); color(topcolor); vertex(radius*v6); vertex(radius*v5); color(bottomcolor); vertex(radius*v4); // bottom color(bottomcolor); vertex(radius*v4); vertex(radius*v0); vertex(radius*v3); vertex(radius*v7); end(); } }