X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2Fmoof%2Faabb.hh;h=8a677f46adc834330bff428e32a44b286d9c488a;hp=64e8968be114d72268808c65ae3630ac69a24582;hb=HEAD;hpb=831f04d4bc19a390415ac0bbac4331c7a65509bc diff --git a/src/moof/aabb.hh b/src/moof/aabb.hh index 64e8968..8a677f4 100644 --- a/src/moof/aabb.hh +++ b/src/moof/aabb.hh @@ -1,22 +1,15 @@ -/*] Copyright (c) 2009-2010, Charles McGarvey [************************** +/*] Copyright (c) 2009-2011, Charles McGarvey [***************************** **] All rights reserved. * -* vi:ts=4 sw=4 tw=75 -* * Distributable under the terms and conditions of the 2-clause BSD license; * see the file COPYING for a complete text of the license. * -**************************************************************************/ +*****************************************************************************/ #ifndef _MOOF_AABB_HH_ #define _MOOF_AABB_HH_ -/** - * \file aabb.hh - * Axis-aligned Bounding Box - */ - #include #include #include @@ -24,16 +17,21 @@ #include #include // FIXME: this file is quite broken +#include #include -#include +/** + * \file aabb.hh + * Axis-aligned Bounding Box + */ + namespace moof { +// forward declarations class script; - template struct aabb : public cullable, public drawable, public shape { @@ -42,7 +40,6 @@ struct aabb : public cullable, public drawable, public shape vector min; vector max; - aabb() {} aabb(const vector& a, const vector& b) @@ -66,7 +63,6 @@ struct aabb : public cullable, public drawable, public shape init(a, b); } - void init(const vector2& a, const vector2& b) { if (a[0] < b[0]) @@ -125,13 +121,11 @@ struct aabb : public cullable, public drawable, public shape } } - vector center() const { return (min + max) / 2.0; } - plane xy_plane() const { plane plane; @@ -156,7 +150,6 @@ struct aabb : public cullable, public drawable, public shape return plane; } - void get_corners(vector2 corners[4]) const { corners[0][0] = min[0]; corners[0][1] = min[1]; @@ -193,12 +186,10 @@ struct aabb : public cullable, public drawable, public shape corners[7][2] = min[2]; } - void enclose_vertices(const vector vertices[], unsigned count) { min.zero(); max.zero(); - for (unsigned i = 1; i < count; ++i) { min.minimize(vertices[i]); @@ -206,7 +197,6 @@ struct aabb : public cullable, public drawable, public shape } } - void draw(scalar alpha = 0.0) const { glRect(min[0], min[1], max[0], max[1]); @@ -224,31 +214,34 @@ void import_aabb_class(script& script); template <> inline void aabb<3>::draw(scalar alpha) const { - scalar vertices[] = {min[0], min[1], min[2], - min[0], max[1], min[2], - max[0], max[1], min[2], - max[0], min[1], min[2], - min[0], max[1], max[2], - min[0], min[1], max[2], - max[0], min[1], max[2], - max[0], max[1], max[2]}; - - GLubyte indices[] = {0, 1, 2, 3, - 1, 2, 7, 4, - 3, 0, 5, 6, - 2, 3, 6, 7, - 5, 0, 1, 4, - 4, 5, 6, 7}; + scalar vertices[] = { + min[0], min[1], min[2], + min[0], max[1], min[2], + max[0], max[1], min[2], + max[0], min[1], min[2], + min[0], max[1], max[2], + min[0], min[1], max[2], + max[0], min[1], max[2], + max[0], max[1], max[2] + }; + + GLubyte indices[] = { + 0, 1, 2, 3, + 1, 2, 7, 4, + 3, 0, 5, 6, + 2, 3, 6, 7, + 5, 0, 1, 4, + 4, 5, 6, 7 + }; glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_TEXTURE_COORD_ARRAY); glVertexPointer(3, GL_SCALAR, 0, vertices); glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - texture::reset_binding(); + image::reset_binding(); - glDrawElements(GL_QUADS, sizeof(indices), GL_UNSIGNED_BYTE, - indices); + glDrawElements(GL_QUADS, sizeof(indices), GL_UNSIGNED_BYTE, indices); glEnableClientState(GL_TEXTURE_COORD_ARRAY); //glDisableClientState(GL_VERTEX_ARRAY); @@ -262,9 +255,8 @@ inline bool aabb<3>::is_visible(const frustum& frustum) const return frustum.contains(*this); } - typedef aabb<2> aabb2; -typedef aabb2 rectangle; +typedef aabb<2> rectangle; typedef aabb<3> aabb3;