From e585187b248f48b3c6e9247b49fa07c6565d65e5 Mon Sep 17 00:00:00 2001 From: maximius Date: Sat, 17 Oct 2009 15:51:44 -0700 Subject: *Backed out changeset 3be01fb200a5 --HG-- branch : trunk --- src/shared/vmap/ShortBox.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/shared/vmap/ShortBox.h') diff --git a/src/shared/vmap/ShortBox.h b/src/shared/vmap/ShortBox.h index f2d87bc6abe..0e98677aa9e 100644 --- a/src/shared/vmap/ShortBox.h +++ b/src/shared/vmap/ShortBox.h @@ -17,18 +17,24 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + #ifndef _SHORTBOX_H #define _SHORTBOX_H + #include #include #include #include + #include "ShortVector.h" + /** This is a box and a triangle Class using ShortVectors. Each vector has 16 bit an a fixed point 12.4 representation. */ + namespace VMAP { + class ShortBox { private: @@ -42,15 +48,18 @@ namespace VMAP inline void setHi(const ShortVector& pV){ iV2 = pV; } inline void setLo(const G3D::Vector3& pV){ iV1 = ShortVector(pV); } inline void setHi(const G3D::Vector3& pV){ iV2 = ShortVector(pV); } + inline bool operator==(const ShortBox& b) const { return ((iV1 == b.iV1) && (iV2 == b.iV2)); } + inline bool operator!=(const ShortBox& b) const { return !((iV1 == b.iV1) && (iV2 == b.iV2)); } }; + //===================================================================== #ifdef _DEBUG_VMAPS #ifndef gBoxArray @@ -61,7 +70,9 @@ namespace VMAP extern bool myfound; #endif #endif + static const G3D::Vector3 dummyZeroPosition = G3D::Vector3(0,0,0); + class TriangleBox { private: @@ -74,16 +85,20 @@ namespace VMAP _vertex[0] = pV1; _vertex[1] = pV2; _vertex[2] = pV3; + } inline const ShortVector& vertex (int n) const { return(_vertex[n]); } + inline const ShortBox getBounds()const { ShortBox box; + ShortVector lo = _vertex[0]; ShortVector hi = lo; + for (int i = 1; i < 3; ++i) { lo = lo.min(_vertex[i]); @@ -94,15 +109,19 @@ namespace VMAP return(box); } inline const G3D::Vector3& getBasePosition() { return(dummyZeroPosition); } + inline const G3D::AABox getAABoxBounds() const { ShortBox box = getBounds(); return(G3D::AABox(box.getLo().getVector3(), box.getHi().getVector3())); } + inline bool operator==(const TriangleBox& t) const { return ((_vertex[0] == t._vertex[0]) && (_vertex[1] == t._vertex[1]) &&(_vertex[2] == t._vertex[2])); } + inline bool operator!=(const TriangleBox& t) const { return !((_vertex[0] == t._vertex[0]) && (_vertex[1] == t._vertex[1]) &&(_vertex[2] == t._vertex[2])); } + inline void intersect(const G3D::Ray& pRay, float& pMaxDist, bool /*pStopAtFirstHitDummy*/, G3D::Vector3& /*pOutLocationDummy*/, G3D::Vector3& /*pOutNormalDummy*/) const { static const double epsilon = 0.00001; @@ -113,6 +132,7 @@ namespace VMAP else { testT = G3D::Triangle(vertex(2).getVector3(),vertex(1).getVector3(),vertex(0).getVector3()); + #ifdef _DEBUG_VMAPS { G3D::Triangle myt(testT.vertex(0)+p6, testT.vertex(1)+p6,testT.vertex(2)+p6); @@ -125,6 +145,7 @@ namespace VMAP } } }; + } #endif -- cgit v1.2.3