Represents part of the world geometry that is a result of a SceneQuery.
bool isLeaf(void) const
Returns true if this node is a leaf (i.e.
float Real
Software floating point type.
Plane mSplitPlane
The plane which splits space in a non-leaf node.
int mFaceGroupStart
Index to the part of the main leaf facegroup index buffer(held in BspLevel) for this leaf...
int mVisCluster
The cluster number of this leaf.
Defines a plane in 3D space.
const AxisAlignedBox & getBoundingBox(void) const
Returns the axis-aligned box which contains this node if it is a leaf.
bool isLeafVisible(const BspNode *leaf) const
Determines if the passed in node (must also be a leaf) is visible from this leaf. ...
BspNode * mFront
Pointer to the node in front of this non-leaf node.
A 3D box aligned with the x/y/z axes.
BspNode * mBack
Pointer to the node behind this non-leaf node.
const IntersectingObjectSet & getObjects(void) const
Abstract class defining a movable object in a scene.
Real getDistance(const Vector3 &pos) const
Gets the signed distance to the dividing plane.
AxisAlignedBox mBounds
The axis-aligned box which bounds node if it is a leaf.
friend std::ostream & operator<<(std::ostream &o, BspNode &n)
set< const MovableObject * >::type IntersectingObjectSet
Side
The "positive side" of the plane is the half space to which the plane normal points.
Plane::Side getSide(const Vector3 &point) const
Determines which side of the splitting plane a worldspace point is.
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
int mNumFaceGroups
Number of face groups in this node if it is a leaf.
BspNode * getBack(void) const
Returns a pointer to a BspNode containing the subspace on the negative side of the splitting plane...
Standard 3-dimensional vector.
int getNumFaceGroups(void) const
Returns the number of faces contained in this leaf node.
Holds all the data associated with a Binary Space Parition (BSP) based indoor level.
NodeBrushList mSolidBrushes
BspNode * getFront(void) const
Returns a pointer to a BspNode containing the subspace on the positive side of the splitting plane...
BspNode * getNextNode(const Vector3 &point) const
Gets the next node down in the tree, with the intention of locating the leaf containing the given poi...
void _removeMovable(const MovableObject *mov)
Internal method for telling the node that a movable no longer intersects it.
const NodeBrushList & getSolidBrushes(void) const
Get the list of solid Brushes for this node.
void _addMovable(const MovableObject *mov)
Internal method for telling the node that a movable intersects it.
SceneQuery::WorldFragment fragment
const Plane & getSplitPlane(void) const
Returns details of the plane which is used to subdivide the space of his node's children.
Encapsulates a node in a BSP tree.
vector< Brush * >::type NodeBrushList
IntersectingObjectSet mMovables
int getFaceGroupStart(void) const
Returns the index to the face group index list for this leaf node.
list< Plane >::type planes