X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2Fmoof%2Faabb.hh;h=3228b5a225a412927a0601b68c5a77bc608a5383;hp=b2fc4b0d23835ce44d1d7a6bb48afbe06bc6f3db;hb=574af38ed616d1adfa5e6ce35f67cda1f707f89d;hpb=6c9943707d4f33035830eba0587a61a34eaecbc2 diff --git a/src/moof/aabb.hh b/src/moof/aabb.hh index b2fc4b0..3228b5a 100644 --- a/src/moof/aabb.hh +++ b/src/moof/aabb.hh @@ -1,13 +1,11 @@ -/*] 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_ @@ -31,9 +29,9 @@ 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,21 +214,25 @@ 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); @@ -247,8 +241,7 @@ inline void aabb<3>::draw(scalar alpha) const glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 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,7 +255,6 @@ inline bool aabb<3>::is_visible(const frustum& frustum) const return frustum.contains(*this); } - typedef aabb<2> aabb2; typedef aabb2 rectangle; typedef aabb<3> aabb3;