"L. Spiro Engine"
|
Classes | |
struct | LSP_NODE |
struct | LSP_STACK |
Public Types | |
typedef struct lsp::CSolidLeafBspBase::LSP_NODE * | LPLSP_NODE |
typedef struct lsp::CSolidLeafBspBase::LSP_NODE | LPCLSP_NODE |
Public Member Functions | |
const LSP_NODE *LSE_CALL | Root () const |
LSBOOL LSE_CALL | CreateBsp (const _tPolyType *_ppPolies, LSUINT32 _ui32Total, CStackAllocator *_psaAllocator, _tType _fThickness=static_cast< _tType >(LSM_PLANE_THICKNESS)) |
LSBOOL LSE_CALL | CreateBspConvex (const _tPolyType *_ppPolies, LSUINT32 _ui32Total, CStackAllocator *_psaAllocator, _tType _fThickness=static_cast< _tType >(LSM_PLANE_THICKNESS)) |
LSBOOL LSE_CALL | GetLeafs (CVectorPoD< LSP_NODE *, LSUINT32 > &_vArray) |
LSBOOL LSE_CALL | GetLeafs (CVectorPoD< const LSP_NODE *, LSUINT32 > &_vArray, CVectorPoD< const LSP_NODE *, LSUINT32 > &_vStack) const |
LSBOOL LSE_CALL | GetLeafs (LSP_NODE *_pnNode, CVectorPoD< LSP_NODE *, LSUINT32 > &_vArray) const |
LSBOOL LSE_CALL | GetLeafs (const LSP_NODE *_pnNode, CVectorPoD< const LSP_NODE *, LSUINT32 > &_vArray, CVectorPoD< const LSP_NODE *, LSUINT32 > &_vStack) const |
Static Public Member Functions | |
static LSBOOL LSE_CALL | GetParents (const LSP_NODE *_pnNode, CVectorPoD< LSP_NODE *, LSUINT32 > &_vArray) |
Protected Types | |
typedef struct lsp::CSolidLeafBspBase::LSP_STACK * | LPLSP_STACK |
typedef struct lsp::CSolidLeafBspBase::LSP_STACK | LPCLSP_STACK |
Protected Member Functions | |
LSBOOL LSE_CALL | CreateBsp (LSP_NODE &_nNode, const CVector< _tPolyType, LSUINT32, 4096UL > &_vPolies, CStackAllocator *_psaAllocator, _tType _fThickness=static_cast< _tType >(LSM_PLANE_THICKNESS)) |
LSBOOL LSE_CALL | CreateBspConvex (LSP_NODE &_nNode, const CVector< _tPolyType, LSUINT32, 4096UL > &_vPolies, CStackAllocator *_psaAllocator, _tType _fThickness=static_cast< _tType >(LSM_PLANE_THICKNESS)) |
_tPlaneType LSE_CALL | BestSplittingPlane (const CVector< _tPolyType, LSUINT32, 4096UL > &_vPolies, LSUINT32 &_ui32Index, _tType _fThickness=static_cast< _tType >(LSM_PLANE_THICKNESS)) |
LSBOOL LSE_CALL | AllAreConvex (const CVector< _tPolyType, LSUINT32, 4096UL > &_vPlanePolies, const CVector< _tPolyType, LSUINT32, 4096UL > &_vPolies, _tType _fThickness=static_cast< _tType >(LSM_PLANE_THICKNESS)) |
LSBOOL LSE_CALL | AllAreSplitters (const CVector< _tPolyType, LSUINT32, 4096UL > &_vPolies) |
Protected Attributes | |
LSP_NODE | m_nRoot |
typedef struct lsp::CSolidLeafBspBase::LSP_NODE * lsp::CSolidLeafBspBase::LPLSP_NODE |
A node in the BSP tree.
typedef struct lsp::CSolidLeafBspBase::LSP_STACK * lsp::CSolidLeafBspBase::LPLSP_STACK [protected] |
The explicit stack used during BSP construction.
LSBOOL LSE_CALL lsp::CSolidLeafBspBase::AllAreConvex | ( | const CVector< _tPolyType, LSUINT32, 4096UL > & | _vPlanePolies, |
const CVector< _tPolyType, LSUINT32, 4096UL > & | _vPolies, | ||
_tType | _fThickness = static_cast<_tType>(LSM_PLANE_THICKNESS) |
||
) | [inline, protected] |
Determines if the polygons in the given array form a convex region of space.
_vPlanePolies | The array of polygons on the splitting plane. |
_vPolies | The array of polygons to check for forming a convex region of space. |
_fThickness | Plane thickness. |
LSBOOL LSE_CALL lsp::CSolidLeafBspBase::AllAreSplitters | ( | const CVector< _tPolyType, LSUINT32, 4096UL > & | _vPolies | ) | [inline, protected] |
Determines if all given polygons are splitters.
_vPolies | The polygons to check. |
_tPlaneType LSE_CALL lsp::CSolidLeafBspBase::BestSplittingPlane | ( | const CVector< _tPolyType, LSUINT32, 4096UL > & | _vPolies, |
LSUINT32 & | _ui32Index, | ||
_tType | _fThickness = static_cast<_tType>(LSM_PLANE_THICKNESS) |
||
) | [inline, protected] |
Finds the best splitting plane for the given set of input polygons.
_vPolies | The polygons for which to find the best splitting plane. |
_ui32Index | On return, holds the index of the polygon whose plane was used for the return. |
_fThickness | Plane thickness. |
LSBOOL LSE_CALL lsp::CSolidLeafBspBase::CreateBsp | ( | const _tPolyType * | _ppPolies, |
LSUINT32 | _ui32Total, | ||
CStackAllocator * | _psaAllocator, | ||
_tType | _fThickness = static_cast<_tType>(LSM_PLANE_THICKNESS) |
||
) | [inline] |
Builds the BSP given an array of polygons.
_ppPolies | The array of polygons. |
_ui32Total | The total number of polygons. |
_psaAllocator | The stack allocator to be used to allocate new nodes and polygon segments. |
_fThickness | Plane thickness. |
LSBOOL LSE_CALL lsp::CSolidLeafBspBase::CreateBsp | ( | LSP_NODE & | _nNode, |
const CVector< _tPolyType, LSUINT32, 4096UL > & | _vPolies, | ||
CStackAllocator * | _psaAllocator, | ||
_tType | _fThickness = static_cast<_tType>(LSM_PLANE_THICKNESS) |
||
) | [inline, protected] |
Builds the BSP given an array of polygons and the node in which to store the results.
_nNode | The node in which to store the results of the splitting. |
_vPolies | The array of polygons. |
_psaAllocator | The stack allocator to be used to allocate new nodes and polygon segments. |
_fThickness | Plane thickness. |
LSBOOL LSE_CALL lsp::CSolidLeafBspBase::CreateBspConvex | ( | LSP_NODE & | _nNode, |
const CVector< _tPolyType, LSUINT32, 4096UL > & | _vPolies, | ||
CStackAllocator * | _psaAllocator, | ||
_tType | _fThickness = static_cast<_tType>(LSM_PLANE_THICKNESS) |
||
) | [inline, protected] |
Builds the BSP given an array of polygons and the node in which to store the results
_nNode | The node in which to store the results of the splitting. |
_vPolies | The array of polygons. |
_psaAllocator | The stack allocator to be used to allocate new nodes and polygon segments. |
_fThickness | Plane thickness. |
LSBOOL LSE_CALL lsp::CSolidLeafBspBase::CreateBspConvex | ( | const _tPolyType * | _ppPolies, |
LSUINT32 | _ui32Total, | ||
CStackAllocator * | _psaAllocator, | ||
_tType | _fThickness = static_cast<_tType>(LSM_PLANE_THICKNESS) |
||
) | [inline] |
Builds the BSP given an array of polygons in which the leafs store convex sets of polygons rather than just polygons coplanar to the leaf plane.
_ppPolies | The array of polygons. |
_ui32Total | The total number of polygons. |
_psaAllocator | The stack allocator to be used to allocate new nodes and polygon segments. |
_fThickness | Plane thickness. |
LSBOOL LSE_CALL lsp::CSolidLeafBspBase::GetLeafs | ( | const LSP_NODE * | _pnNode, |
CVectorPoD< const LSP_NODE *, LSUINT32 > & | _vArray, | ||
CVectorPoD< const LSP_NODE *, LSUINT32 > & | _vStack | ||
) | const [inline] |
Fills the given array with pointers to the leafs on this tree.
_pnNode | The node. |
_vArray | Holds the returned array of leafs. |
_vStack | Explicit stack to use. |
LSBOOL LSE_CALL lsp::CSolidLeafBspBase::GetLeafs | ( | CVectorPoD< LSP_NODE *, LSUINT32 > & | _vArray | ) | [inline] |
Fills the given array with pointers to the leafs on this tree.
_vArray | Holds the returned array of leafs. |
LSBOOL LSE_CALL lsp::CSolidLeafBspBase::GetLeafs | ( | CVectorPoD< const LSP_NODE *, LSUINT32 > & | _vArray, |
CVectorPoD< const LSP_NODE *, LSUINT32 > & | _vStack | ||
) | const [inline] |
Fills the given array with pointers to the leafs on this tree.
_vArray | Holds the returned array of leafs. |
_vStack | Explicit stack to use. |
LSBOOL LSE_CALL lsp::CSolidLeafBspBase::GetLeafs | ( | LSP_NODE * | _pnNode, |
CVectorPoD< LSP_NODE *, LSUINT32 > & | _vArray | ||
) | const [inline] |
Fills the given array with pointers to the leafs on this tree.
_pnNode | The node. |
_vArray | Holds the returned array of leafs. |
static LSBOOL LSE_CALL lsp::CSolidLeafBspBase::GetParents | ( | const LSP_NODE * | _pnNode, |
CVectorPoD< LSP_NODE *, LSUINT32 > & | _vArray | ||
) | [inline, static] |
Fills the given array with pointers to the parents of the given node.
_pnNode | The node whose parents are to be returned. |
_vArray | Holds the returned array of parent nodes. |
const LSP_NODE* LSE_CALL lsp::CSolidLeafBspBase::Root | ( | ) | const [inline] |
Gets a pointer to the root node to the BSP tree. Never returns NULL.
LSP_NODE lsp::CSolidLeafBspBase::m_nRoot [protected] |
The root node.