Holds a solid representation of a convex body.
More...
#include <OgreConvexBody.h>
|
| | ConvexBody () |
| |
| | ConvexBody (const ConvexBody &cpy) |
| |
| | ~ConvexBody () |
| |
| 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 Frustum &frustum) |
| | Clips the body with a frustum.
|
| |
| void | clip (const Plane &pl, bool keepNegative=true) |
| | Clips the object by the positive half space of a plane.
|
| |
| void | define (const AxisAlignedBox &aab) |
| | Build a new polygon representation from an AAB.
|
| |
| void | define (const Frustum &frustum) |
| | Build a new polygon representation from a frustum.
|
| |
| void | extend (const Vector3 &pt) |
| | Extends the existing body to incorporate the passed in point as a convex hull.
|
| |
| AxisAlignedBox | getAABB (void) const |
| | Returns an AABB representation.
|
| |
| const Vector3 & | getNormal (size_t poly) |
| | Returns the normal of a specified polygon.
|
| |
| const Polygon & | getPolygon (size_t poly) const |
| | Returns a polygon.
|
| |
| size_t | getPolygonCount (void) const |
| | Returns the current number of polygons.
|
| |
| const Vector3 & | getVertex (size_t poly, size_t vertex) const |
| | Returns a specific vertex of a polygon.
|
| |
| size_t | getVertexCount (size_t poly) const |
| | Returns the number of vertices for a polygon.
|
| |
| bool | hasClosedHull (void) const |
| | Checks if the body has a closed hull.
|
| |
| void | logInfo () const |
| | Log details of this body.
|
| |
| 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 not equal to the compared one.
|
| |
| bool | operator== (const ConvexBody &rhs) const |
| | Determines if the current object is equal to the compared one.
|
| |
| void | reset (void) |
| | Resets the object.
|
| |
|
| static void | _destroyPool () |
| | Tear down the internal polygon pool used to minimise allocations.
|
| |
| static void | _initialisePool () |
| | Initialise the internal polygon pool used to minimise allocations.
|
| |
|
| 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.
|
| |
| void | deletePolygon (size_t poly) |
| | Deletes a specific polygon.
|
| |
| void | deleteVertex (size_t poly, size_t vertex) |
| | Deletes a specific vertex of a specific polygon.
|
| |
| 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.
|
| |
| 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 | insertPolygon (Polygon *pdata) |
| | Inserts a polygon at the end.
|
| |
| void | insertPolygon (Polygon *pdata, size_t poly) |
| | Inserts a polygon at a particular point in the body.
|
| |
| void | insertVertex (size_t poly, const Vector3 &vdata) |
| | Inserts a vertex for 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 | moveDataFromBody (ConvexBody &body) |
| | Moves all polygons from the parameter body to this instance.
|
| |
| 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.
|
| |
| void | storeEdgesOfPolygon (size_t poly, Polygon::EdgeMap *edgeMap) const |
| | Stores the edges of a specific polygon in a passed in structure.
|
| |
| Polygon * | unlinkPolygon (size_t poly) |
| | Removes a specific polygon from the body without deleting it.
|
| |
Holds a solid representation of a convex body.
Definition at line 55 of file OgreConvexBody.h.
◆ PolygonList
◆ ConvexBody() [1/2]
| Ogre::ConvexBody::ConvexBody |
( |
| ) |
|
◆ ~ConvexBody()
| Ogre::ConvexBody::~ConvexBody |
( |
| ) |
|
◆ ConvexBody() [2/2]
| Ogre::ConvexBody::ConvexBody |
( |
const ConvexBody & | cpy | ) |
|
◆ _destroyPool()
| static void Ogre::ConvexBody::_destroyPool |
( |
| ) |
|
|
static |
Tear down the internal polygon pool used to minimise allocations.
◆ _initialisePool()
| static void Ogre::ConvexBody::_initialisePool |
( |
| ) |
|
|
static |
Initialise the internal polygon pool used to minimise allocations.
◆ allocatePolygon()
| static Polygon * Ogre::ConvexBody::allocatePolygon |
( |
| ) |
|
|
staticprotected |
Get a new polygon from the pool.
◆ allocateSpace()
| 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.
◆ clip() [1/4]
Clips the body with an AAB.
The resulting holes are filled with new polygons.
◆ clip() [2/4]
| void Ogre::ConvexBody::clip |
( |
const ConvexBody & | body | ) |
|
◆ clip() [3/4]
| void Ogre::ConvexBody::clip |
( |
const Frustum & | frustum | ) |
|
Clips the body with a frustum.
The resulting holes are filled with new polygons.
◆ clip() [4/4]
| void Ogre::ConvexBody::clip |
( |
const Plane & | pl, |
|
|
bool | keepNegative = true ) |
Clips the object by the positive half space of a plane.
◆ define() [1/2]
Build a new polygon representation from an AAB.
◆ define() [2/2]
| void Ogre::ConvexBody::define |
( |
const Frustum & | frustum | ) |
|
Build a new polygon representation from a frustum.
◆ deletePolygon()
| void Ogre::ConvexBody::deletePolygon |
( |
size_t | poly | ) |
|
|
protected |
Deletes a specific polygon.
◆ deleteVertex()
| void Ogre::ConvexBody::deleteVertex |
( |
size_t | poly, |
|
|
size_t | vertex ) |
|
protected |
Deletes a specific vertex of a specific polygon.
◆ extend()
| void Ogre::ConvexBody::extend |
( |
const Vector3 & | pt | ) |
|
Extends the existing body to incorporate the passed in point as a convex hull.
◆ findAndEraseEdgePair()
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
◆ freePolygon()
| static void Ogre::ConvexBody::freePolygon |
( |
Polygon * | poly | ) |
|
|
staticprotected |
Release a polygon back tot he pool.
◆ getAABB()
Returns an AABB representation.
◆ getNormal()
| const Vector3 & Ogre::ConvexBody::getNormal |
( |
size_t | poly | ) |
|
Returns the normal of a specified polygon.
◆ getPolygon()
| const Polygon & Ogre::ConvexBody::getPolygon |
( |
size_t | poly | ) |
const |
◆ getPolygonCount()
| size_t Ogre::ConvexBody::getPolygonCount |
( |
void | | ) |
const |
Returns the current number of polygons.
◆ getSingleEdges()
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)).
◆ getVertex()
| const Vector3 & Ogre::ConvexBody::getVertex |
( |
size_t | poly, |
|
|
size_t | vertex ) const |
Returns a specific vertex of a polygon.
◆ getVertexCount()
| size_t Ogre::ConvexBody::getVertexCount |
( |
size_t | poly | ) |
const |
Returns the number of vertices for a polygon.
◆ hasClosedHull()
| bool Ogre::ConvexBody::hasClosedHull |
( |
void | | ) |
const |
Checks if the body has a closed hull.
◆ insertPolygon() [1/2]
| 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.
◆ insertPolygon() [2/2]
| 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.
◆ insertVertex() [1/2]
| 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.
◆ insertVertex() [2/2]
| 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.
◆ logInfo()
| void Ogre::ConvexBody::logInfo |
( |
| ) |
const |
Log details of this body.
◆ mergePolygons()
| void Ogre::ConvexBody::mergePolygons |
( |
void | | ) |
|
Merges all neighboring polygons into one single polygon if they are lay in the same plane.
◆ moveDataFromBody()
| 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
References ConvexBody().
◆ operator!=()
| bool Ogre::ConvexBody::operator!= |
( |
const ConvexBody & | rhs | ) |
const |
◆ operator==()
| bool Ogre::ConvexBody::operator== |
( |
const ConvexBody & | rhs | ) |
const |
Determines if the current object is equal to the compared one.
References ConvexBody().
◆ reset()
| void Ogre::ConvexBody::reset |
( |
void | | ) |
|
◆ setPolygon()
| 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.
◆ setVertex()
| 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.
◆ storeEdgesOfPolygon()
| void Ogre::ConvexBody::storeEdgesOfPolygon |
( |
size_t | poly, |
|
|
Polygon::EdgeMap * | edgeMap ) const |
|
protected |
Stores the edges of a specific polygon in a passed in structure.
◆ unlinkPolygon()
| 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.
◆ operator<<
◆ mPolygons
◆ msFreePolygons
The documentation for this class was generated from the following file: