| OGRE 1.11.1 Object-Oriented Graphics Rendering Engine

Public Types | Public Member Functions | Public Attributes | List of all members
Ogre::Octree Class Reference
Plugins » OctreeSceneManager Plugins » | OctreeZone

Octree datastructure for managing scene nodes. More...

`#include <OgreOctreeZoneOctree.h>`

Inheritance diagram for Ogre::Octree:
[legend]

## Public Types
typedef std::vector< OctreeNode *> | NodeList

## Public Member Functions
| Octree (Octree *p)
| Octree (PCZone *zone, Octree *p)
| ~Octree ()
| ~Octree ()
void | _addNode (OctreeNode *)
| Adds an Octree scene node to this octree level. More...
void | _addNode (PCZSceneNode *)
| Adds an PCZscene node to this octree level. More...
void | _findNodes (const AxisAlignedBox &t, PCZSceneNodeList &list, PCZSceneNode *exclude, bool includeVisitors, bool full)
void | _findNodes (const Ray &t, PCZSceneNodeList &list, PCZSceneNode *exclude, bool includeVisitors, bool full)
void | _findNodes (const Sphere &t, PCZSceneNodeList &list, PCZSceneNode *exclude, bool includeVisitors, bool full)
void | _findNodes (const PlaneBoundedVolume &t, PCZSceneNodeList &list, PCZSceneNode *exclude, bool includeVisitors, bool full)
void | _getChildIndexes (const AxisAlignedBox &, int *x, int *y, int *z) const
| Returns the appropriate indexes for the child of this octree into which the box will fit. More...
void | _getChildIndexes (const AxisAlignedBox &, int *x, int *y, int *z) const
| Returns the appropriate indexes for the child of this octree into which the box will fit. More...
void | _getCullBounds (AxisAlignedBox *) const
| Creates the AxisAlignedBox used for culling this octree. More...
void | _getCullBounds (AxisAlignedBox *) const
| Creates the AxisAlignedBox used for culling this octree. More...
bool | _isTwiceSize (const AxisAlignedBox &box) const
| Determines if this octree is twice as big as the given box. More...
bool | _isTwiceSize (const AxisAlignedBox &box) const
| Determines if this octree is twice as big as the given box. More...
void | _removeNode (OctreeNode *)
| Removes an Octree scene node to this octree level. More...
void | _removeNode (PCZSceneNode *)
| Removes an PCZscene node to this octree level. More...
WireBoundingBox * | getWireBoundingBox ()
| Creates the wire frame bounding box for this octant. More...
WireBoundingBox * | getWireBoundingBox ()
| Creates the wire frame bounding box for this octant. More...
int | numNodes ()
| Returns the number of scene nodes attached to this octree. More...
int | numNodes ()
| Returns the number of scene nodes attached to this octree. More...

## Public Attributes
AxisAlignedBox | mBox
| The bounding box of the octree. More...
Octree * | mChildren [2][2][2]
| 3D array of children of this octree. More...
Vector3 | mHalfSize
| Vector containing the dimensions of this octree / 2. More...
NodeList | mNodes
| Public list of SceneNodes attached to this particular octree. More...
PCZSceneNodeList | mNodes
| Public list of SceneNodes attached to this particular octree. More...
WireBoundingBox * | mWireBoundingBox
PCZone * | mZone

## Detailed Description

Octree datastructure for managing scene nodes.

Remarks
  This is a loose octree implementation, meaning that each octant child of the octree actually overlaps it's siblings by a factor of .5. This guarantees that any thing that is half the size of the parent will fit completely into a child, with no splitting necessary.

## Member Typedef Documentation

## ◆ NodeList

typedef std::vector< OctreeNode * > Ogre::Octree::NodeList

## Constructor & Destructor Documentation

## ◆ Octree() [1/2]

Ogre::Octree::Octree | ( | Octree * | p | ) |

## ◆ ~Octree() [1/2]

Ogre::Octree::~Octree | ( |  | ) |

## ◆ Octree() [2/2]

Ogre::Octree::Octree | ( | PCZone * | zone,
|  | Octree * | p
| ) |  |

## ◆ ~Octree() [2/2]

Ogre::Octree::~Octree | ( |  | ) |

## Member Function Documentation

## ◆ _addNode() [1/2]

void Ogre::Octree::_addNode | ( | OctreeNode * |  | ) |

Adds an Octree scene node to this octree level.

Remarks
  This is called by the OctreeSceneManager after it has determined the correct Octree to insert the node into.

## ◆ _removeNode() [1/2]

void Ogre::Octree::_removeNode | ( | OctreeNode * |  | ) |

Removes an Octree scene node to this octree level.

## ◆ numNodes() [1/2]

int Ogre::Octree::numNodes | ( |  | ) |
| inline

Returns the number of scene nodes attached to this octree.

## ◆ getWireBoundingBox() [1/2]

WireBoundingBox* Ogre::Octree::getWireBoundingBox | ( |  | ) |

Creates the wire frame bounding box for this octant.

## ◆ _isTwiceSize() [1/2]

bool Ogre::Octree::_isTwiceSize | ( | const AxisAlignedBox & | box | ) | const

Determines if this octree is twice as big as the given box.

Remarks
  This method is used by the OctreeSceneManager to determine if the given box will fit into a child of this octree.

## ◆ _getChildIndexes() [1/2]

void Ogre::Octree::_getChildIndexes | ( | const AxisAlignedBox & | ,
|  | int * | x,
|  | int * | y,
|  | int * | z
| ) |  | const

Returns the appropriate indexes for the child of this octree into which the box will fit.

Remarks
  This is used by the OctreeSceneManager to determine which child to traverse next when finding the appropriate octree to insert the box. Since it is a loose octree, only the center of the box is checked to determine the octant.

## ◆ _getCullBounds() [1/2]

void Ogre::Octree::_getCullBounds | ( | AxisAlignedBox * |  | ) | const

Creates the AxisAlignedBox used for culling this octree.

Remarks
  Since it's a loose octree, the culling bounds can be different than the actual bounds of the octree.

## ◆ _addNode() [2/2]

void Ogre::Octree::_addNode | ( | PCZSceneNode * |  | ) |

Adds an PCZscene node to this octree level.

Remarks
  This is called by the OctreeZone after it has determined the correct Octree to insert the node into.

## ◆ _removeNode() [2/2]

void Ogre::Octree::_removeNode | ( | PCZSceneNode * |  | ) |

Removes an PCZscene node to this octree level.

## ◆ numNodes() [2/2]

int Ogre::Octree::numNodes | ( |  | ) |
| inline

Returns the number of scene nodes attached to this octree.

## ◆ getWireBoundingBox() [2/2]

WireBoundingBox* Ogre::Octree::getWireBoundingBox | ( |  | ) |

Creates the wire frame bounding box for this octant.

## ◆ _isTwiceSize() [2/2]

bool Ogre::Octree::_isTwiceSize | ( | const AxisAlignedBox & | box | ) | const

Determines if this octree is twice as big as the given box.

Remarks
  This method is used by the OctreeSceneManager to determine if the given box will fit into a child of this octree.

## ◆ _getChildIndexes() [2/2]

void Ogre::Octree::_getChildIndexes | ( | const AxisAlignedBox & | ,
|  | int * | x,
|  | int * | y,
|  | int * | z
| ) |  | const

Returns the appropriate indexes for the child of this octree into which the box will fit.

Remarks
  This is used by the OctreeSceneManager to determine which child to traverse next when finding the appropriate octree to insert the box. Since it is a loose octree, only the center of the box is checked to determine the octant.

## ◆ _getCullBounds() [2/2]

void Ogre::Octree::_getCullBounds | ( | AxisAlignedBox * |  | ) | const

Creates the AxisAlignedBox used for culling this octree.

Remarks
  Since it's a loose octree, the culling bounds can be different than the actual bounds of the octree.

## ◆ _findNodes() [1/4]

void Ogre::Octree::_findNodes | ( | const AxisAlignedBox & | t,
|  | PCZSceneNodeList & | list,
|  | PCZSceneNode * | exclude,
|  | bool | includeVisitors,
|  | bool | full
| ) |  |

## ◆ _findNodes() [2/4]

void Ogre::Octree::_findNodes | ( | const Ray & | t,
|  | PCZSceneNodeList & | list,
|  | PCZSceneNode * | exclude,
|  | bool | includeVisitors,
|  | bool | full
| ) |  |

## ◆ _findNodes() [3/4]

void Ogre::Octree::_findNodes | ( | const Sphere & | t,
|  | PCZSceneNodeList & | list,
|  | PCZSceneNode * | exclude,
|  | bool | includeVisitors,
|  | bool | full
| ) |  |

## ◆ _findNodes() [4/4]

void Ogre::Octree::_findNodes | ( | const PlaneBoundedVolume & | t,
|  | PCZSceneNodeList & | list,
|  | PCZSceneNode * | exclude,
|  | bool | includeVisitors,
|  | bool | full
| ) |  |

## Member Data Documentation

## ◆ mBox

AxisAlignedBox Ogre::Octree::mBox

The bounding box of the octree.

Remarks
  This is used for octant index determination and rendering, but not culling

## ◆ mWireBoundingBox

WireBoundingBox * Ogre::Octree::mWireBoundingBox

## ◆ mHalfSize

Vector3 Ogre::Octree::mHalfSize

Vector containing the dimensions of this octree / 2.

## ◆ mChildren

Octree * Ogre::Octree::mChildren

3D array of children of this octree.

Remarks
  Children are dynamically created as needed when nodes are inserted in the Octree. If, later, all the nodes are removed from the child, it is still kept around.

## ◆ mNodes [1/2]

NodeList Ogre::Octree::mNodes

Public list of SceneNodes attached to this particular octree.

## ◆ mNodes [2/2]

PCZSceneNodeList Ogre::Octree::mNodes

Public list of SceneNodes attached to this particular octree.

## ◆ mZone

PCZone* Ogre::Octree::mZone

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

- OgreOctree.h
- OgreOctreeZoneOctree.h