Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

Ogre::ConvexBody Class Reference

Holds a solid representation of a convex body. More...

#include <OgreConvexBody.h>

List of all members.

Public Types

typedef std::vector< Polygon * > PolygonList

Public Member Functions

 ConvexBody ()
 ~ConvexBody ()
 ConvexBody (const ConvexBody &cpy)
void define (const Frustum &frustum)
 Build a new polygon representation from a frustum.
void define (const AxisAlignedBox &aab)
 Build a new polygon representation from an AAB.
void clip (const Frustum &frustum)
 Clips the body with a frustum.
void clip (const AxisAlignedBox &aab)
 Clips the body with an AAB.
void clip (const ConvexBody &body)
 Clips the body with another body.
void clip (const Plane &pl, bool keepNegative=true)
 Clips the object by the positive half space of a plane.
void extend (const Vector3 &pt)
 Extends the existing body to incorporate the passed in point as a convex hull.
void reset (void)
 Resets the object.
size_t getPolygonCount (void) const
 Returns the current number of polygons.
size_t getVertexCount (size_t poly) const
 Returns the number of vertices for a polygon.
const PolygongetPolygon (size_t poly) const
 Returns a polygon.
const Vector3getVertex (size_t poly, size_t vertex) const
 Returns a specific vertex of a polygon.
const Vector3getNormal (size_t poly)
 Returns the normal of a specified polygon.
AxisAlignedBox getAABB (void) const
 Returns an AABB representation.
bool hasClosedHull (void) const
 Checks if the body has a closed hull.
void mergePolygons (void)
 Merges all neighboring polygons into one single polygon if they are lay in the same plane.
bool operator== (const ConvexBody &rhs) const
 Determines if the current object is equal to the compared one.
bool operator!= (const ConvexBody &rhs) const
 Determines if the current object is not equal to the compared one.
void logInfo () const
 Log details of this body.

Static Public Member Functions

static void _initialisePool ()
 Initialise the internal polygon pool used to minimise allocations.
static void _destroyPool ()
 Tear down the internal polygon pool used to minimise allocations.

Protected Member Functions

void insertPolygon (Polygon *pdata, size_t poly)
 Inserts a polygon at a particular point in the body.
void insertPolygon (Polygon *pdata)
 Inserts a polygon at the end.
void insertVertex (size_t poly, const Vector3 &vdata, size_t vertex)
 Inserts a vertex for a polygon at a particular point.
void insertVertex (size_t poly, const Vector3 &vdata)
 Inserts a vertex for a polygon at the end.
void deletePolygon (size_t poly)
 Deletes a specific polygon.
PolygonunlinkPolygon (size_t poly)
 Removes a specific polygon from the body without deleting it.
void moveDataFromBody (ConvexBody &body)
 Moves all polygons from the parameter body to this instance.
void deleteVertex (size_t poly, size_t vertex)
 Deletes a specific vertex of a specific polygon.
void setPolygon (Polygon *pdata, size_t poly)
 Replace a polygon at a particular index.
void setVertex (size_t poly, const Vector3 &vdata, size_t vertex)
 Replace a specific vertex of a polygon.
Polygon::EdgeMap getSingleEdges () const
 Returns the single edges in an EdgeMap (= edges where one side is a vertex and the other is empty space (a hole in the body)).
void storeEdgesOfPolygon (size_t poly, Polygon::EdgeMap *edgeMap) const
 Stores the edges of a specific polygon in a passed in structure.
void allocateSpace (size_t numPolygons, size_t numVertices)
 Allocates space for an specified amount of polygons with each of them having a specified number of vertices.
bool findAndEraseEdgePair (const Vector3 &vec, Polygon::EdgeMap &intersectionEdges, Vector3 &vNext) const
 Searches for a pair (an edge) in the intersectionList with an entry that equals vec, and removes it from the passed in list.

Static Protected Member Functions

static PolygonallocatePolygon ()
 Get a new polygon from the pool.
static void freePolygon (Polygon *poly)
 Release a polygon back tot he pool.

Protected Attributes

PolygonList mPolygons

Static Protected Attributes

static PolygonList msFreePolygons

Friends

_OgreExport friend std::ostream & operator<< (std::ostream &strm, const ConvexBody &body)
 Prints out the body with all its polygons.


Detailed Description

Holds a solid representation of a convex body.

Remarks:
Administers a convex body. All polygons of the body are convex and planar. Several operations may be applied, ranging from intersection to join where each result it itself a convex body.

Definition at line 46 of file OgreConvexBody.h.


Member Typedef Documentation

typedef std::vector< Polygon* > Ogre::ConvexBody::PolygonList
 

Definition at line 49 of file OgreConvexBody.h.


Constructor & Destructor Documentation

Ogre::ConvexBody::ConvexBody  ) 
 

Ogre::ConvexBody::~ConvexBody  ) 
 

Ogre::ConvexBody::ConvexBody const ConvexBody cpy  ) 
 


Member Function Documentation

static void Ogre::ConvexBody::_destroyPool  )  [static]
 

Tear down the internal polygon pool used to minimise allocations.

static void Ogre::ConvexBody::_initialisePool  )  [static]
 

Initialise the internal polygon pool used to minimise allocations.

static Polygon* Ogre::ConvexBody::allocatePolygon  )  [static, protected]
 

Get a new polygon from the pool.

void Ogre::ConvexBody::allocateSpace size_t  numPolygons,
size_t  numVertices
[protected]
 

Allocates space for an specified amount of polygons with each of them having a specified number of vertices.

Note:
Old data (if available) will be erased.

void Ogre::ConvexBody::clip const Plane pl,
bool  keepNegative = true
 

Clips the object by the positive half space of a plane.

void Ogre::ConvexBody::clip const ConvexBody body  ) 
 

Clips the body with another body.

void Ogre::ConvexBody::clip const AxisAlignedBox aab  ) 
 

Clips the body with an AAB.

The resulting holes are filled with new polygons.

void Ogre::ConvexBody::clip const Frustum frustum  ) 
 

Clips the body with a frustum.

The resulting holes are filled with new polygons.

void Ogre::ConvexBody::define const AxisAlignedBox aab  ) 
 

Build a new polygon representation from an AAB.

void Ogre::ConvexBody::define const Frustum frustum  ) 
 

Build a new polygon representation from a frustum.

void Ogre::ConvexBody::deletePolygon size_t  poly  )  [protected]
 

Deletes a specific polygon.

void Ogre::ConvexBody::deleteVertex size_t  poly,
size_t  vertex
[protected]
 

Deletes a specific vertex of a specific polygon.

void Ogre::ConvexBody::extend const Vector3 pt  ) 
 

Extends the existing body to incorporate the passed in point as a convex hull.

Remarks:
You must already have constructed a basic body using a 'construct' method.

bool Ogre::ConvexBody::findAndEraseEdgePair const Vector3 vec,
Polygon::EdgeMap intersectionEdges,
Vector3 vNext
const [protected]
 

Searches for a pair (an edge) in the intersectionList with an entry that equals vec, and removes it from the passed in list.

Parameters:
vec The vertex to search for in intersectionEdges
intersectionEdges A list of edges, which is updated if a match is found
vNext A reference to a vector which will be filled with the other vertex at the matching edge, if found.
Returns:
True if a match was found

static void Ogre::ConvexBody::freePolygon Polygon poly  )  [static, protected]
 

Release a polygon back tot he pool.

AxisAlignedBox Ogre::ConvexBody::getAABB void   )  const
 

Returns an AABB representation.

const Vector3& Ogre::ConvexBody::getNormal size_t  poly  ) 
 

Returns the normal of a specified polygon.

const Polygon& Ogre::ConvexBody::getPolygon size_t  poly  )  const
 

Returns a polygon.

size_t Ogre::ConvexBody::getPolygonCount void   )  const
 

Returns the current number of polygons.

Polygon::EdgeMap Ogre::ConvexBody::getSingleEdges  )  const [protected]
 

Returns the single edges in an EdgeMap (= edges where one side is a vertex and the other is empty space (a hole in the body)).

const Vector3& Ogre::ConvexBody::getVertex size_t  poly,
size_t  vertex
const
 

Returns a specific vertex of a polygon.

size_t Ogre::ConvexBody::getVertexCount size_t  poly  )  const
 

Returns the number of vertices for a polygon.

bool Ogre::ConvexBody::hasClosedHull void   )  const
 

Checks if the body has a closed hull.

void Ogre::ConvexBody::insertPolygon Polygon pdata  )  [protected]
 

Inserts a polygon at the end.

Note:
After this method is called, the ConvexBody 'owns' this Polygon and will be responsible for deleting it.

void Ogre::ConvexBody::insertPolygon Polygon pdata,
size_t  poly
[protected]
 

Inserts a polygon at a particular point in the body.

Note:
After this method is called, the ConvexBody 'owns' this Polygon and will be responsible for deleting it.

void Ogre::ConvexBody::insertVertex size_t  poly,
const Vector3 vdata
[protected]
 

Inserts a vertex for a polygon at the end.

Note:
No checks are done whether the assembled polygon is (still) planar, the caller must ensure that this is the case.

void Ogre::ConvexBody::insertVertex size_t  poly,
const Vector3 vdata,
size_t  vertex
[protected]
 

Inserts a vertex for a polygon at a particular point.

Note:
No checks are done whether the assembled polygon is (still) planar, the caller must ensure that this is the case.

void Ogre::ConvexBody::logInfo  )  const
 

Log details of this body.

void Ogre::ConvexBody::mergePolygons void   ) 
 

Merges all neighboring polygons into one single polygon if they are lay in the same plane.

void Ogre::ConvexBody::moveDataFromBody ConvexBody body  )  [protected]
 

Moves all polygons from the parameter body to this instance.

Note:
Both the passed in object and this instance are modified

bool Ogre::ConvexBody::operator!= const ConvexBody rhs  )  const
 

Determines if the current object is not equal to the compared one.

Definition at line 142 of file OgreConvexBody.h.

bool Ogre::ConvexBody::operator== const ConvexBody rhs  )  const
 

Determines if the current object is equal to the compared one.

void Ogre::ConvexBody::reset void   ) 
 

Resets the object.

void Ogre::ConvexBody::setPolygon Polygon pdata,
size_t  poly
[protected]
 

Replace a polygon at a particular index.

Note:
Again, the passed in polygon is owned by this object after this call returns, and this object is resonsible for deleting it.

void Ogre::ConvexBody::setVertex size_t  poly,
const Vector3 vdata,
size_t  vertex
[protected]
 

Replace a specific vertex of a polygon.

Note:
No checks are done whether the assembled polygon is (still) planar, the caller must ensure that this is the case.

void Ogre::ConvexBody::storeEdgesOfPolygon size_t  poly,
Polygon::EdgeMap edgeMap
const [protected]
 

Stores the edges of a specific polygon in a passed in structure.

Polygon* Ogre::ConvexBody::unlinkPolygon size_t  poly  )  [protected]
 

Removes a specific polygon from the body without deleting it.

Note:
The retrieved polygon needs to be deleted later by the caller.


Friends And Related Function Documentation

_OgreExport friend std::ostream& operator<< std::ostream &  strm,
const ConvexBody body
[friend]
 

Prints out the body with all its polygons.


Member Data Documentation

PolygonList Ogre::ConvexBody::mPolygons [protected]
 

Definition at line 52 of file OgreConvexBody.h.

PolygonList Ogre::ConvexBody::msFreePolygons [static, protected]
 

Definition at line 55 of file OgreConvexBody.h.


The documentation for this class was generated from the following file:

Copyright © 2008 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sat Apr 11 13:47:31 2009