A node in a quad tree used to store a patch of terrain. More...
#include <OgreTerrainQuadTreeNode.h>
Classes | |
struct | LodLevel |
class | Movable |
MovableObject implementation to provide the hook to the scene. More... | |
class | Rend |
Hook to the render queue. More... | |
struct | VertexDataRecord |
Public Types | |
typedef vector< LodLevel * >::type | LodLevelList |
Public Member Functions | |
TerrainQuadTreeNode (Terrain *terrain, TerrainQuadTreeNode *parent, uint16 xoff, uint16 yoff, uint16 size, uint16 lod, uint16 depth, uint16 quadrant) | |
Constructor. | |
virtual | ~TerrainQuadTreeNode () |
Renderable * | _getRenderable () |
Returns the internal renderable object for this node. | |
void | assignVertexData (uint16 treeDepthStart, uint16 treeDepthEnd, uint16 resolution, uint sz) |
Assign vertex data to the tree, from a depth and at a given resolution. | |
bool | calculateCurrentLod (const Camera *cam, Real cFactor) |
Calculate appropriate LOD for this node and children. | |
void | finaliseDeltaValues (const Rect &rect) |
Promote the delta values calculated to the runtime ones (this must be called in the main thread). | |
const AxisAlignedBox & | getAABB () const |
Get the AABB (local coords) of this node. | |
uint16 | getBaseLod () const |
Get the base LOD level this node starts at (the highest LOD it handles) | |
Real | getBoundingRadius () const |
Get the bounding radius of this node. | |
TerrainQuadTreeNode * | getChild (unsigned short child) const |
Get child node. | |
int | getCurrentLod () const |
Get the current LOD index (only valid after calculateCurrentLod) | |
const Vector3 & | getLocalCentre () const |
Get the local centre of this node, relative to parent terrain centre. | |
uint16 | getLodCount () const |
Get the number of LOD levels this node can represent itself (only > 1 for leaf nodes) | |
const LodLevel * | getLodLevel (uint16 lod) |
Get the LodLevel information for a given lod. | |
float | getLodTransition () const |
Get the transition state between the current LOD and the next lower one (only valid after calculateCurrentLod) | |
Real | getMaxHeight () const |
Get the maximum height of the node. | |
Real | getMinHeight () const |
Get the minimum height of the node. | |
TerrainQuadTreeNode * | getParent () const |
Get parent node. | |
Terrain * | getTerrain () const |
Get ultimate parent terrain. | |
uint16 | getXOffset () const |
Get the horizontal offset into the main terrain data of this node. | |
uint16 | getYOffset () const |
Get the vertical offset into the main terrain data of this node. | |
bool | isLeaf () const |
Is this a leaf node (no children) | |
bool | isRenderedAtCurrentLod () const |
Returns whether this node is rendering itself at the current LOD level. | |
bool | isSelfOrChildRenderedAtCurrentLod () const |
Returns whether this node or its children are being rendered at the current LOD level. | |
void | load () |
Load node and children (perform GPU tasks, will be render thread) | |
void | load (uint16 depthStart, uint16 depthEnd) |
Load node and children in a depth range (perform GPU tasks, will be render thread) | |
void | loadSelf () |
void | mergeIntoBounds (long x, long y, const Vector3 &pos) |
Merge a point (relative to terrain node) into the local bounds, and that of children if applicable. | |
void | notifyDelta (uint16 x, uint16 y, uint16 lod, Real delta) |
Notify the node (and children) of a height delta value. | |
void | operator delete (void *ptr) |
void | operator delete (void *ptr, const char *, int, const char *) |
void | operator delete (void *ptr, void *) |
void | operator delete[] (void *ptr) |
void | operator delete[] (void *ptr, const char *, int, const char *) |
void * | operator new (size_t sz) |
void * | operator new (size_t sz, const char *file, int line, const char *func) |
operator new, with debug line info | |
void * | operator new (size_t sz, void *ptr) |
placement operator new | |
void * | operator new[] (size_t sz) |
void * | operator new[] (size_t sz, const char *file, int line, const char *func) |
array operator new, with debug line info | |
bool | pointIntersectsNode (long x, long y) |
Returns true if the given point is in the terrain area that this node references. | |
void | postDeltaCalculation (const Rect &rect) |
Notify the node (and children) that deltas have finished being calculated. | |
void | preDeltaCalculation (const Rect &rect) |
Notify the node (and children) that deltas are going to be calculated for a given range. | |
void | prepare () |
Prepare node and children (perform CPU tasks, may be background thread) | |
void | prepare (StreamSerialiser &stream) |
Prepare node from a stream. | |
bool | rectContainsNode (const Rect &rect) |
Returns true if the given rectangle completely contains the terrain area that this node references. | |
bool | rectIntersectsNode (const Rect &rect) |
Returns true if the given rectangle overlaps the terrain area that this node references. | |
void | resetBounds (const Rect &rect) |
Reset the bounds of this node and all its children for the region given. | |
void | save (StreamSerialiser &stream) |
Save node to a stream. | |
void | setCurrentLod (int lod) |
Manually set the current LOD, intended for internal use only. | |
void | setLodTransition (float t) |
Manually set the current LOD transition state, intended for internal use only. | |
void | unload () |
Unload node and children (perform GPU tasks, will be render thread) | |
void | unload (uint16 depthStart, uint16 depthEnd) |
Unload node and children in a depth range (perform GPU tasks, will be render thread) | |
void | unprepare () |
Unprepare node and children (perform CPU tasks, may be background thread) | |
void | updateVertexData (bool positions, bool deltas, const Rect &rect, bool cpuData) |
Tell the node to update its vertex data for a given region. | |
void | useAncestorVertexData (TerrainQuadTreeNode *owner, uint16 treeDepthEnd, uint16 resolution) |
Tell a node that it should use an anscestor's vertex data. | |
Static Public Attributes | |
static unsigned short | DELTA_BUFFER |
Buffer binding used for holding delta values. | |
static unsigned short | POSITION_BUFFER |
Buffer binding used for holding positions. | |
Protected Attributes | |
AxisAlignedBox | mAABB |
Relative to terrain centre. | |
uint16 | mBaseLod |
uint16 | mBoundaryX |
uint16 | mBoundaryY |
Real | mBoundingRadius |
Relative to mLocalCentre. | |
TerrainQuadTreeNode * | mChildren [4] |
TerrainQuadTreeNode * | mChildWithMaxHeightDelta |
0-1 transition to lower LOD | |
int | mCurrentLod |
Relative to mLocalCentre. | |
uint16 | mDepth |
Vector3 | mLocalCentre |
SceneNode * | mLocalNode |
LodLevelList | mLodLevels |
float | mLodTransition |
unsigned short | mMaterialLodIndex |
-1 = none (do not render) | |
Movable * | mMovable |
TerrainQuadTreeNode * | mNodeWithVertexData |
uint16 | mOffsetX |
uint16 | mOffsetY |
TerrainQuadTreeNode * | mParent |
uint16 | mQuadrant |
Rend * | mRend |
bool | mSelfOrChildRendered |
uint16 | mSize |
The number of vertices at the original terrain resolution this node encompasses. | |
Terrain * | mTerrain |
VertexDataRecord * | mVertexDataRecord |
Friends | |
class | Movable |
class | Rend |
A node in a quad tree used to store a patch of terrain.
Definition at line 85 of file OgreTerrainQuadTreeNode.h.
Definition at line 154 of file OgreTerrainQuadTreeNode.h.
Ogre::TerrainQuadTreeNode::TerrainQuadTreeNode | ( | Terrain * | terrain, |
TerrainQuadTreeNode * | parent, | ||
uint16 | xoff, | ||
uint16 | yoff, | ||
uint16 | size, | ||
uint16 | lod, | ||
uint16 | depth, | ||
uint16 | quadrant | ||
) |
Constructor.
terrain | The ultimate parent terrain |
parent | Optional parent node (in which case xoff, yoff are 0 and size must be entire terrain) |
xoff,yoff | Offsets from the start of the terrain data in 2D |
size | The size of the node in vertices at the highest LOD |
lod | The base LOD level |
depth | The depth that this node is at in the tree (or convenience) |
quadrant | The index of the quadrant (0, 1, 2, 3) |
|
virtual |
Renderable * Ogre::TerrainQuadTreeNode::_getRenderable | ( | ) |
Returns the internal renderable object for this node.
void Ogre::TerrainQuadTreeNode::assignVertexData | ( | uint16 | treeDepthStart, |
uint16 | treeDepthEnd, | ||
uint16 | resolution, | ||
uint | sz | ||
) |
Assign vertex data to the tree, from a depth and at a given resolution.
treeDepthStart | The first depth of tree that should use this data, owns the data |
treeDepthEnd | The end of the depth that should use this data (exclusive) |
resolution | The resolution of the data to use (compared to full terrain) |
sz | The size of the data along one edge |
Calculate appropriate LOD for this node and children.
cam | The camera to be used (this should already be the LOD camera) |
cFactor | The cFactor which incorporates the viewport size, max pixel error and lod bias |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Promote the delta values calculated to the runtime ones (this must be called in the main thread).
const AxisAlignedBox & Ogre::TerrainQuadTreeNode::getAABB | ( | ) | const |
Get the AABB (local coords) of this node.
uint16 Ogre::TerrainQuadTreeNode::getBaseLod | ( | ) | const |
Get the base LOD level this node starts at (the highest LOD it handles)
Definition at line 108 of file OgreTerrainQuadTreeNode.h.
Real Ogre::TerrainQuadTreeNode::getBoundingRadius | ( | ) | const |
Get the bounding radius of this node.
TerrainQuadTreeNode * Ogre::TerrainQuadTreeNode::getChild | ( | unsigned short | child | ) | const |
Get child node.
int Ogre::TerrainQuadTreeNode::getCurrentLod | ( | ) | const |
Get the current LOD index (only valid after calculateCurrentLod)
Definition at line 248 of file OgreTerrainQuadTreeNode.h.
Get the local centre of this node, relative to parent terrain centre.
Definition at line 234 of file OgreTerrainQuadTreeNode.h.
uint16 Ogre::TerrainQuadTreeNode::getLodCount | ( | ) | const |
Get the number of LOD levels this node can represent itself (only > 1 for leaf nodes)
Get the LodLevel information for a given lod.
lod | The lod level index relative to this classes own list; if you want to use a global lod level, subtract getBaseLod() first. Higher LOD levels are lower detail. |
float Ogre::TerrainQuadTreeNode::getLodTransition | ( | ) | const |
Get the transition state between the current LOD and the next lower one (only valid after calculateCurrentLod)
Definition at line 256 of file OgreTerrainQuadTreeNode.h.
|
protected |
Real Ogre::TerrainQuadTreeNode::getMaxHeight | ( | ) | const |
Get the maximum height of the node.
Real Ogre::TerrainQuadTreeNode::getMinHeight | ( | ) | const |
Get the minimum height of the node.
TerrainQuadTreeNode * Ogre::TerrainQuadTreeNode::getParent | ( | ) | const |
Get parent node.
|
protected |
Terrain * Ogre::TerrainQuadTreeNode::getTerrain | ( | ) | const |
Get ultimate parent terrain.
|
protected |
uint16 Ogre::TerrainQuadTreeNode::getXOffset | ( | ) | const |
Get the horizontal offset into the main terrain data of this node.
Definition at line 102 of file OgreTerrainQuadTreeNode.h.
uint16 Ogre::TerrainQuadTreeNode::getYOffset | ( | ) | const |
Get the vertical offset into the main terrain data of this node.
Definition at line 104 of file OgreTerrainQuadTreeNode.h.
bool Ogre::TerrainQuadTreeNode::isLeaf | ( | ) | const |
Is this a leaf node (no children)
bool Ogre::TerrainQuadTreeNode::isRenderedAtCurrentLod | ( | ) | const |
Returns whether this node is rendering itself at the current LOD level.
bool Ogre::TerrainQuadTreeNode::isSelfOrChildRenderedAtCurrentLod | ( | ) | const |
Returns whether this node or its children are being rendered at the current LOD level.
void Ogre::TerrainQuadTreeNode::load | ( | ) |
Load node and children (perform GPU tasks, will be render thread)
Load node and children in a depth range (perform GPU tasks, will be render thread)
void Ogre::TerrainQuadTreeNode::loadSelf | ( | ) |
Merge a point (relative to terrain node) into the local bounds, and that of children if applicable.
x,y | The point on the terrain to which this position corresponds (affects which nodes update their bounds) |
pos | The position relative to the terrain centre |
Notify the node (and children) of a height delta value.
Definition at line 96 of file OgreMemoryAllocatedObject.h.
|
inherited |
Definition at line 108 of file OgreMemoryAllocatedObject.h.
Definition at line 102 of file OgreMemoryAllocatedObject.h.
|
inherited |
Definition at line 113 of file OgreMemoryAllocatedObject.h.
|
inherited |
Definition at line 119 of file OgreMemoryAllocatedObject.h.
Definition at line 73 of file OgreMemoryAllocatedObject.h.
|
inherited |
operator new, with debug line info
Definition at line 68 of file OgreMemoryAllocatedObject.h.
placement operator new
Definition at line 79 of file OgreMemoryAllocatedObject.h.
Definition at line 91 of file OgreMemoryAllocatedObject.h.
|
inherited |
array operator new, with debug line info
Definition at line 86 of file OgreMemoryAllocatedObject.h.
Returns true if the given point is in the terrain area that this node references.
x,y | The point in top-level terrain coords |
|
protected |
Notify the node (and children) that deltas have finished being calculated.
Notify the node (and children) that deltas are going to be calculated for a given range.
void Ogre::TerrainQuadTreeNode::prepare | ( | ) |
Prepare node and children (perform CPU tasks, may be background thread)
void Ogre::TerrainQuadTreeNode::prepare | ( | StreamSerialiser & | stream | ) |
Prepare node from a stream.
Returns true if the given rectangle completely contains the terrain area that this node references.
rect | The region in top-level terrain coords |
Returns true if the given rectangle overlaps the terrain area that this node references.
rect | The region in top-level terrain coords |
Reset the bounds of this node and all its children for the region given.
rect | The region for which bounds should be reset, in top-level terrain coords |
void Ogre::TerrainQuadTreeNode::save | ( | StreamSerialiser & | stream | ) |
Save node to a stream.
Manually set the current LOD, intended for internal use only.
Manually set the current LOD transition state, intended for internal use only.
void Ogre::TerrainQuadTreeNode::unload | ( | ) |
Unload node and children (perform GPU tasks, will be render thread)
Unload node and children in a depth range (perform GPU tasks, will be render thread)
void Ogre::TerrainQuadTreeNode::unprepare | ( | ) |
Unprepare node and children (perform CPU tasks, may be background thread)
|
protected |
|
protected |
|
protected |
void Ogre::TerrainQuadTreeNode::updateVertexData | ( | bool | positions, |
bool | deltas, | ||
const Rect & | rect, | ||
bool | cpuData | ||
) |
Tell the node to update its vertex data for a given region.
void Ogre::TerrainQuadTreeNode::useAncestorVertexData | ( | TerrainQuadTreeNode * | owner, |
uint16 | treeDepthEnd, | ||
uint16 | resolution | ||
) |
Tell a node that it should use an anscestor's vertex data.
treeDepthEnd | The end of the depth that should use this data (exclusive) |
resolution | The resolution of the data to use |
|
protected |
|
protected |
|
protected |
Definition at line 356 of file OgreTerrainQuadTreeNode.h.
Definition at line 378 of file OgreTerrainQuadTreeNode.h.
Buffer binding used for holding delta values.
Definition at line 263 of file OgreTerrainQuadTreeNode.h.
|
protected |
Relative to terrain centre.
Definition at line 281 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 277 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 274 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 274 of file OgreTerrainQuadTreeNode.h.
|
protected |
Relative to mLocalCentre.
Definition at line 282 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 270 of file OgreTerrainQuadTreeNode.h.
|
protected |
0-1 transition to lower LOD
The child with the largest height delta
Definition at line 287 of file OgreTerrainQuadTreeNode.h.
|
protected |
Relative to mLocalCentre.
Definition at line 283 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 278 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 280 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 357 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 271 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 285 of file OgreTerrainQuadTreeNode.h.
-1 = none (do not render)
Definition at line 284 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 355 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 313 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 273 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 273 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 269 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 279 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 377 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 288 of file OgreTerrainQuadTreeNode.h.
|
protected |
The number of vertices at the original terrain resolution this node encompasses.
Definition at line 276 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 268 of file OgreTerrainQuadTreeNode.h.
|
protected |
Definition at line 314 of file OgreTerrainQuadTreeNode.h.
Buffer binding used for holding positions.
Definition at line 261 of file OgreTerrainQuadTreeNode.h.
Copyright © 2012 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.