#include namespace IMG { BBox::BBox() { BBox::StartBoundingBox(); } BBox::~BBox() { } void BBox::StartBoundingBox() { mMinimum.x = BOUNDINGBOX_MAXVALUE; mMinimum.y = BOUNDINGBOX_MAXVALUE; mMinimum.z = BOUNDINGBOX_MAXVALUE; mMaximum.x = -BOUNDINGBOX_MAXVALUE; mMaximum.y = -BOUNDINGBOX_MAXVALUE; mMaximum.z = -BOUNDINGBOX_MAXVALUE; } Ogre::Vector3 BBox::GetMinimum() { return mMinimum; } Ogre::Vector3 BBox::GetMaximum() { return mMaximum; } void BBox::AddBoundingVector3(float x, float y, float z) { if (x < mMinimum.x) { mMinimum.x = x; } if (x > mMaximum.x) { mMaximum.x = x; } if (y < mMinimum.y) { mMinimum.y = y; } if (y > mMaximum.y) { mMaximum.y = y; } if (z < mMinimum.z) { mMinimum.z = z; } if (z > mMaximum.z) { mMaximum.z = z; } } void BBox::Print() { Ogre::LogManager::getSingleton().logMessage("\nValor de la Caixa: (" + Ogre::StringConverter::toString(mMinimum) + ") - (" + + ") " + Ogre::StringConverter::toString(mMaximum)); } Ogre::Vector3 BBox::GetCorner(int corner) const { Ogre::Vector3 vector; switch (corner) { case BOX_CORNER_xyz: vector = Ogre::Vector3(mMinimum.x, mMinimum.y, mMinimum.z ); break; case BOX_CORNER_xyZ: vector = Ogre::Vector3(mMinimum.x, mMinimum.y, mMaximum.z ); break; case BOX_CORNER_xYz: vector = Ogre::Vector3(mMinimum.x, mMaximum.y, mMinimum.z ); break; case BOX_CORNER_xYZ: vector = Ogre::Vector3(mMinimum.x, mMaximum.y, mMaximum.z ); break; case BOX_CORNER_Xyz: vector = Ogre::Vector3(mMaximum.x, mMinimum.y, mMinimum.z ); break; case BOX_CORNER_XyZ: vector = Ogre::Vector3(mMaximum.x, mMinimum.y, mMaximum.z ); break; case BOX_CORNER_XYz: vector = Ogre::Vector3(mMaximum.x, mMaximum.y, mMinimum.z ); break; case BOX_CORNER_XYZ: vector = Ogre::Vector3(mMaximum.x, mMaximum.y, mMaximum.z ); break; } return vector; } bool BBox::intersects(Ogre::Vector3 v) { return Ogre::AxisAlignedBox::intersects(v); } }