OgreTerrainQuadTreeNode.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of OGRE
4 (Object-oriented Graphics Rendering Engine)
5 For the latest info, see http://www.ogre3d.org/
6 
7 Copyright (c) 2000-2013 Torus Knot Software Ltd
8 
9 Permission is hereby granted, free of charge, to any person obtaining a copy
10 of this software and associated documentation files (the "Software"), to deal
11 in the Software without restriction, including without limitation the rights
12 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 copies of the Software, and to permit persons to whom the Software is
14 furnished to do so, subject to the following conditions:
15 
16 The above copyright notice and this permission notice shall be included in
17 all copies or substantial portions of the Software.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 THE SOFTWARE.
26 -----------------------------------------------------------------------------
27 */
28 
29 #ifndef __Ogre_TerrainQuadTreeNode_H__
30 #define __Ogre_TerrainQuadTreeNode_H__
31 
33 #include "OgreCommon.h"
35 #include "OgreMovableObject.h"
36 #include "OgreRenderable.h"
37 
38 
39 
40 namespace Ogre
41 {
42  class HardwareVertexBufferSharedPtr;
43 
86  {
87  public:
98  uint16 xoff, uint16 yoff, uint16 size, uint16 lod, uint16 depth, uint16 quadrant);
100 
102  uint16 getXOffset() const { return mOffsetX; }
104  uint16 getYOffset() const { return mOffsetY; }
106  bool isLeaf() const;
108  uint16 getBaseLod() const { return mBaseLod; }
112  TerrainQuadTreeNode* getChild(unsigned short child) const;
116  Terrain* getTerrain() const;
117 
119  void prepare();
121  void prepare(StreamSerialiser& stream);
123  void load();
125  void load(uint16 depthStart, uint16 depthEnd);
126  void loadSelf();
128  void unload();
130  void unload(uint16 depthStart, uint16 depthEnd);
132  void unprepare();
134  void save(StreamSerialiser& stream);
135 
137  {
150 
151  LodLevel() : batchSize(0), gpuIndexData(0), maxHeightDelta(0), calcMaxHeightDelta(0),
152  lastTransitionDist(0), lastCFactor(0) {}
153  };
155 
162 
167  void preDeltaCalculation(const Rect& rect);
168 
170  void notifyDelta(uint16 x, uint16 y, uint16 lod, Real delta);
171 
174  void postDeltaCalculation(const Rect& rect);
175 
179  void finaliseDeltaValues(const Rect& rect);
180 
187  void assignVertexData(uint16 treeDepthStart, uint16 treeDepthEnd, uint16 resolution, uint sz);
188 
193  void useAncestorVertexData(TerrainQuadTreeNode* owner, uint16 treeDepthEnd, uint16 resolution);
194 
197  void updateVertexData(bool positions, bool deltas, const Rect& rect, bool cpuData);
198 
199 
200 
207  void mergeIntoBounds(long x, long y, const Vector3& pos);
211  void resetBounds(const Rect& rect);
212 
217  bool rectIntersectsNode(const Rect& rect);
222  bool rectContainsNode(const Rect& rect);
227  bool pointIntersectsNode(long x, long y);
228 
230  const AxisAlignedBox& getAABB() const;
234  const Vector3& getLocalCentre() const { return mLocalCentre; }
239 
245  bool calculateCurrentLod(const Camera* cam, Real cFactor);
246 
248  int getCurrentLod() const { return mCurrentLod; }
254  void setCurrentLod(int lod);
256  float getLodTransition() const { return mLodTransition; }
258  void setLodTransition(float t);
259 
261  static unsigned short POSITION_BUFFER;
263  static unsigned short DELTA_BUFFER;
264 
267  protected:
270  TerrainQuadTreeNode* mChildren[4];
272 
273  uint16 mOffsetX, mOffsetY;
274  uint16 mBoundaryX, mBoundaryY;
284  unsigned short mMaterialLodIndex;
286  TerrainQuadTreeNode* mChildWithMaxHeightDelta;
289 
291  {
306 
308  : cpuVertexData(0), gpuVertexData(0), resolution(res), size(sz),
309  treeLevels(lvls), numSkirtRowsCols(0),
310  skirtRowColSkip(0), gpuVertexDataDirty(false) {}
311  };
312 
315 
336  {
337  protected:
339  public:
341  virtual ~Movable();
342 
343  // necessary overrides
344  const String& getMovableType(void) const;
345  const AxisAlignedBox& getBoundingBox(void) const;
346  Real getBoundingRadius(void) const;
348  void visitRenderables(Renderable::Visitor* visitor, bool debugRenderables = false);
349  bool isVisible(void) const;
351  uint32 getQueryFlags(void) const;
352  bool getCastShadows(void) const;
353 
354  };
356  friend class Movable;
358 
361  {
362  protected:
364  public:
366  virtual ~Rend();
367 
368  const MaterialPtr& getMaterial(void) const;
369  Technique* getTechnique(void) const;
371  void getWorldTransforms(Matrix4* xform) const;
372  Real getSquaredViewDepth(const Camera* cam) const;
373  const LightList& getLights(void) const;
374  bool getCastsShadows(void) const;
375 
376  };
378  friend class Rend;
379 
380  // actual implementation of MovableObject methods
382  void visitRenderables(Renderable::Visitor* visitor, bool debugRenderables = false);
383  // actual implementations of Renderable methods
384  const MaterialPtr& getMaterial(void) const;
385  Technique* getTechnique(void) const;
387  void getWorldTransforms(Matrix4* xform) const;
388  Real getSquaredViewDepth(const Camera* cam) const;
389  const LightList& getLights(void) const;
390  bool getCastsShadows(void) const;
391 
392 
395  /* Update the vertex buffers - the rect in question is relative to the whole terrain,
396  not the local vertex data (which may use a subset)
397  */
400 
406 
407  void populateIndexData(uint16 batchSize, IndexData* destData);
408  void writePosVertex(bool compress, uint16 x, uint16 y, float height, const Vector3& pos, float uvScale, float** ppPos);
409  void writeDeltaVertex(bool compress, uint16 x, uint16 y, float delta, float deltaThresh, float** ppDelta);
410 
411  uint16 calcSkirtVertexIndex(uint16 mainIndex, bool isCol);
412 
413  };
414 
417 }
418 
419 #endif
Ogre::TerrainQuadTreeNode::VertexDataRecord::cpuVertexData
VertexData * cpuVertexData
Definition: OgreTerrainQuadTreeNode.h:292
Ogre::HashedVector< Light * >
Ogre::TerrainQuadTreeNode::getXOffset
uint16 getXOffset() const
Get the horizontal offset into the main terrain data of this node.
Definition: OgreTerrainQuadTreeNode.h:102
Ogre::TerrainQuadTreeNode::Movable::getCastShadows
bool getCastShadows(void) const
Returns whether shadow casting is enabled for this object.
Ogre::TerrainQuadTreeNode::Movable::getQueryFlags
uint32 getQueryFlags(void) const
Returns the query flags relevant for this object.
Ogre::TerrainQuadTreeNode::Rend::getRenderOperation
void getRenderOperation(RenderOperation &op)
Gets the render operation required to send this object to the frame buffer.
Ogre::TerrainQuadTreeNode::notifyDelta
void notifyDelta(uint16 x, uint16 y, uint16 lod, Real delta)
Notify the node (and children) of a height delta value.
Ogre::TerrainQuadTreeNode::load
void load()
Load node and children (perform GPU tasks, will be render thread)
Ogre::TerrainQuadTreeNode::TerrainQuadTreeNode
TerrainQuadTreeNode(Terrain *terrain, TerrainQuadTreeNode *parent, uint16 xoff, uint16 yoff, uint16 size, uint16 lod, uint16 depth, uint16 quadrant)
Constructor.
Ogre::TerrainQuadTreeNode::getSquaredViewDepth
Real getSquaredViewDepth(const Camera *cam) const
Ogre::AllocatedObject
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Definition: OgreMemoryAllocatedObject.h:59
Ogre
Definition: OgreAndroidLogListener.h:35
Ogre::TerrainQuadTreeNode::getCastsShadows
bool getCastsShadows(void) const
Ogre::TerrainQuadTreeNode::LodLevel::calcMaxHeightDelta
Real calcMaxHeightDelta
Temp calc area for max height delta.
Definition: OgreTerrainQuadTreeNode.h:145
Ogre::TerrainQuadTreeNode::createGpuIndexData
void createGpuIndexData()
Ogre::TerrainQuadTreeNode::Movable::visitRenderables
void visitRenderables(Renderable::Visitor *visitor, bool debugRenderables=false)
Method to allow a caller to abstractly iterate over the Renderable instances that this MovableObject ...
Ogre::Camera
A viewpoint from which the scene will be rendered.
Definition: OgreCamera.h:87
Ogre::TerrainQuadTreeNode::mergeIntoBounds
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.
Ogre::TerrainQuadTreeNode::Movable::isVisible
bool isVisible(void) const
Returns whether or not this object is supposed to be visible or not.
Ogre::TerrainQuadTreeNode::mLocalNode
SceneNode * mLocalNode
Definition: OgreTerrainQuadTreeNode.h:357
Ogre::TerrainQuadTreeNode::setCurrentLod
void setCurrentLod(int lod)
Manually set the current LOD, intended for internal use only.
Ogre::TerrainQuadTreeNode::mVertexDataRecord
VertexDataRecord * mVertexDataRecord
Definition: OgreTerrainQuadTreeNode.h:314
Ogre::TerrainQuadTreeNode::VertexDataRecord::skirtRowColSkip
uint16 skirtRowColSkip
The number of rows / cols to skip in between skirts.
Definition: OgreTerrainQuadTreeNode.h:303
Ogre::TerrainQuadTreeNode::LodLevel::gpuIndexData
IndexData * gpuIndexData
Index data on the gpu.
Definition: OgreTerrainQuadTreeNode.h:141
Ogre::TerrainQuadTreeNode::Rend::mParent
TerrainQuadTreeNode * mParent
Definition: OgreTerrainQuadTreeNode.h:363
Ogre::TerrainQuadTreeNode::resetBounds
void resetBounds(const Rect &rect)
Reset the bounds of this node and all its children for the region given.
Ogre::TerrainQuadTreeNode::getTechnique
Technique * getTechnique(void) const
Ogre::TerrainQuadTreeNode::getChild
TerrainQuadTreeNode * getChild(unsigned short child) const
Get child node.
_OgreTerrainExport
#define _OgreTerrainExport
Definition: OgreTerrainPrerequisites.h:58
Ogre::TerrainQuadTreeNode::mCurrentLod
int mCurrentLod
Relative to mLocalCentre.
Definition: OgreTerrainQuadTreeNode.h:283
Ogre::TRect< long >
Ogre::TerrainQuadTreeNode::unload
void unload()
Unload node and children (perform GPU tasks, will be render thread)
Ogre::TerrainQuadTreeNode::LodLevel::batchSize
uint16 batchSize
Number of vertices rendered down one side (not including skirts)
Definition: OgreTerrainQuadTreeNode.h:139
Ogre::TerrainQuadTreeNode::preDeltaCalculation
void preDeltaCalculation(const Rect &rect)
Notify the node (and children) that deltas are going to be calculated for a given range.
Ogre::TerrainQuadTreeNode::getBaseLod
uint16 getBaseLod() const
Get the base LOD level this node starts at (the highest LOD it handles)
Definition: OgreTerrainQuadTreeNode.h:108
Ogre::TerrainQuadTreeNode::getLights
const LightList & getLights(void) const
Ogre::TerrainQuadTreeNode::getCurrentLod
int getCurrentLod() const
Get the current LOD index (only valid after calculateCurrentLod)
Definition: OgreTerrainQuadTreeNode.h:248
Ogre::Terrain
The main containing class for a chunk of terrain.
Definition: OgreTerrain.h:264
Ogre::TerrainQuadTreeNode::finaliseDeltaValues
void finaliseDeltaValues(const Rect &rect)
Promote the delta values calculated to the runtime ones (this must be called in the main thread).
Ogre::uint16
unsigned short uint16
Definition: OgrePlatform.h:360
Ogre::TerrainQuadTreeNode::isRenderedAtCurrentLod
bool isRenderedAtCurrentLod() const
Returns whether this node is rendering itself at the current LOD level.
Ogre::MovableObject
Abstract class defining a movable object in a scene.
Definition: OgreMovableObject.h:61
Ogre::TerrainQuadTreeNode::getMinHeight
Real getMinHeight() const
Get the minimum height of the node.
Ogre::TerrainQuadTreeNode::updateVertexData
void updateVertexData(bool positions, bool deltas, const Rect &rect, bool cpuData)
Tell the node to update its vertex data for a given region.
Ogre::TerrainQuadTreeNode::rectIntersectsNode
bool rectIntersectsNode(const Rect &rect)
Returns true if the given rectangle overlaps the terrain area that this node references.
Ogre::TerrainQuadTreeNode::mMaterialLodIndex
unsigned short mMaterialLodIndex
-1 = none (do not render)
Definition: OgreTerrainQuadTreeNode.h:284
Ogre::uint32
unsigned int uint32
Definition: OgrePlatform.h:359
OgreHardwareIndexBuffer.h
Ogre::TerrainQuadTreeNode::Rend::getTechnique
Technique * getTechnique(void) const
Retrieves a pointer to the Material Technique this renderable object uses.
Ogre::TerrainQuadTreeNode::VertexDataRecord::VertexDataRecord
VertexDataRecord(uint16 res, uint16 sz, uint16 lvls)
Definition: OgreTerrainQuadTreeNode.h:307
Ogre::String
_StringBase String
Definition: OgrePrerequisites.h:439
Ogre::Technique
Class representing an approach to rendering this particular Material.
Definition: OgreTechnique.h:54
Ogre::TerrainQuadTreeNode::unload
void unload(uint16 depthStart, uint16 depthEnd)
Unload node and children in a depth range (perform GPU tasks, will be render thread)
Ogre::TerrainQuadTreeNode::Rend::Rend
Rend(TerrainQuadTreeNode *parent)
Ogre::TerrainQuadTreeNode::LodLevel::lastCFactor
Real lastCFactor
The cFactor value used to calculate transitionDist.
Definition: OgreTerrainQuadTreeNode.h:149
Ogre::TerrainQuadTreeNode::loadSelf
void loadSelf()
OgreTerrainPrerequisites.h
Ogre::SceneNode
Class representing a node in the scene graph.
Definition: OgreSceneNode.h:59
Ogre::TerrainQuadTreeNode::LodLevel
Definition: OgreTerrainQuadTreeNode.h:137
Ogre::TerrainQuadTreeNode::mOffsetY
uint16 mOffsetY
Definition: OgreTerrainQuadTreeNode.h:273
Ogre::TerrainQuadTreeNode::writeDeltaVertex
void writeDeltaVertex(bool compress, uint16 x, uint16 y, float delta, float deltaThresh, float **ppDelta)
Ogre::TerrainQuadTreeNode
A node in a quad tree used to store a patch of terrain.
Definition: OgreTerrainQuadTreeNode.h:86
Ogre::TerrainQuadTreeNode::assignVertexData
void assignVertexData(uint16 treeDepthStart, uint16 treeDepthEnd, uint16 resolution, uint sz)
Assign vertex data to the tree, from a depth and at a given resolution.
Ogre::TerrainQuadTreeNode::mSelfOrChildRendered
bool mSelfOrChildRendered
Definition: OgreTerrainQuadTreeNode.h:288
Ogre::VertexData
Summary class collecting together vertex source information.
Definition: OgreVertexIndexData.h:50
Ogre::TerrainQuadTreeNode::getBoundingRadius
Real getBoundingRadius() const
Get the bounding radius of this node.
Ogre::TerrainQuadTreeNode::mDepth
uint16 mDepth
Definition: OgreTerrainQuadTreeNode.h:278
Ogre::TerrainQuadTreeNode::save
void save(StreamSerialiser &stream)
Save node to a stream.
Ogre::TerrainQuadTreeNode::getWorldTransforms
void getWorldTransforms(Matrix4 *xform) const
Ogre::TerrainQuadTreeNode::load
void load(uint16 depthStart, uint16 depthEnd)
Load node and children in a depth range (perform GPU tasks, will be render thread)
Ogre::TerrainQuadTreeNode::getVertexDataRecord
const VertexDataRecord * getVertexDataRecord() const
Ogre::TerrainQuadTreeNode::updateRenderQueue
void updateRenderQueue(RenderQueue *queue)
Ogre::Matrix4
Class encapsulating a standard 4x4 homogeneous matrix.
Definition: OgreMatrix4.h:79
Ogre::TerrainQuadTreeNode::calcSkirtVertexIndex
uint16 calcSkirtVertexIndex(uint16 mainIndex, bool isCol)
Ogre::TerrainQuadTreeNode::Movable::getVisibilityFlags
uint32 getVisibilityFlags(void) const
Returns the visibility flags relevant for this object.
Ogre::TerrainQuadTreeNode::pointIntersectsNode
bool pointIntersectsNode(long x, long y)
Returns true if the given point is in the terrain area that this node references.
Ogre::TerrainQuadTreeNode::LodLevel::maxHeightDelta
Real maxHeightDelta
Maximum delta height between this and the next lower lod.
Definition: OgreTerrainQuadTreeNode.h:143
Ogre::TerrainQuadTreeNode::mQuadrant
uint16 mQuadrant
Definition: OgreTerrainQuadTreeNode.h:279
Ogre::TerrainQuadTreeNode::mNodeWithVertexData
TerrainQuadTreeNode * mNodeWithVertexData
Definition: OgreTerrainQuadTreeNode.h:313
Ogre::TerrainQuadTreeNode::isSelfOrChildRenderedAtCurrentLod
bool isSelfOrChildRenderedAtCurrentLod() const
Returns whether this node or its children are being rendered at the current LOD level.
Ogre::HardwareVertexBufferSharedPtr
Shared pointer implementation used to share vertex buffers.
Definition: OgreHardwareVertexBuffer.h:87
Ogre::TerrainQuadTreeNode::Movable::getMovableType
const String & getMovableType(void) const
Returns the type name of this object.
Ogre::TerrainQuadTreeNode::Rend::~Rend
virtual ~Rend()
Ogre::TerrainQuadTreeNode::populateIndexData
void populateIndexData(uint16 batchSize, IndexData *destData)
Ogre::TerrainQuadTreeNode::visitRenderables
void visitRenderables(Renderable::Visitor *visitor, bool debugRenderables=false)
Ogre::TerrainQuadTreeNode::mLodTransition
float mLodTransition
Definition: OgreTerrainQuadTreeNode.h:285
Ogre::TerrainQuadTreeNode::Rend::getCastsShadows
bool getCastsShadows(void) const
Method which reports whether this renderable would normally cast a shadow.
Ogre::TerrainQuadTreeNode::Movable::mParent
TerrainQuadTreeNode * mParent
Definition: OgreTerrainQuadTreeNode.h:338
Ogre::TerrainQuadTreeNode::mTerrain
Terrain * mTerrain
Definition: OgreTerrainQuadTreeNode.h:268
Ogre::TerrainQuadTreeNode::useAncestorVertexData
void useAncestorVertexData(TerrainQuadTreeNode *owner, uint16 treeDepthEnd, uint16 resolution)
Tell a node that it should use an anscestor's vertex data.
Ogre::TerrainQuadTreeNode::getMaterial
const MaterialPtr & getMaterial(void) const
Ogre::TerrainQuadTreeNode::~TerrainQuadTreeNode
virtual ~TerrainQuadTreeNode()
Ogre::TerrainQuadTreeNode::Rend::getWorldTransforms
void getWorldTransforms(Matrix4 *xform) const
Gets the world transform matrix / matrices for this renderable object.
Ogre::TerrainQuadTreeNode::VertexDataRecord::numSkirtRowsCols
uint16 numSkirtRowsCols
Number of rows and columns of skirts.
Definition: OgreTerrainQuadTreeNode.h:301
Ogre::TerrainQuadTreeNode::_getRenderable
Renderable * _getRenderable()
Returns the internal renderable object for this node.
Ogre::TerrainQuadTreeNode::getRenderOperation
void getRenderOperation(RenderOperation &op)
Ogre::TerrainQuadTreeNode::writePosVertex
void writePosVertex(bool compress, uint16 x, uint16 y, float height, const Vector3 &pos, float uvScale, float **ppPos)
Ogre::TerrainQuadTreeNode::VertexDataRecord::treeLevels
uint16 treeLevels
Number of quadtree levels (including this one) this data applies to.
Definition: OgreTerrainQuadTreeNode.h:299
Ogre::AxisAlignedBox
A 3D box aligned with the x/y/z axes.
Definition: OgreAxisAlignedBox.h:55
Ogre::TerrainQuadTreeNode::mAABB
AxisAlignedBox mAABB
Relative to terrain centre.
Definition: OgreTerrainQuadTreeNode.h:281
Ogre::TerrainQuadTreeNode::getYOffset
uint16 getYOffset() const
Get the vertical offset into the main terrain data of this node.
Definition: OgreTerrainQuadTreeNode.h:104
OgreCommon.h
Ogre::TerrainQuadTreeNode::mMovable
Movable * mMovable
Definition: OgreTerrainQuadTreeNode.h:355
Ogre::TerrainQuadTreeNode::Movable::_updateRenderQueue
void _updateRenderQueue(RenderQueue *queue)
Internal method by which the movable object must add Renderable subclass instances to the rendering q...
Ogre::TerrainQuadTreeNode::LodLevel::lastTransitionDist
Real lastTransitionDist
The most recently calculated transition distance.
Definition: OgreTerrainQuadTreeNode.h:147
Ogre::TerrainQuadTreeNode::VertexDataRecord
Definition: OgreTerrainQuadTreeNode.h:291
Ogre::TerrainQuadTreeNode::mLocalCentre
Vector3 mLocalCentre
Definition: OgreTerrainQuadTreeNode.h:280
Ogre::TerrainQuadTreeNode::prepare
void prepare(StreamSerialiser &stream)
Prepare node from a stream.
Ogre::SharedPtr< Material >
Ogre::TerrainQuadTreeNode::Movable
MovableObject implementation to provide the hook to the scene.
Definition: OgreTerrainQuadTreeNode.h:336
Ogre::TerrainQuadTreeNode::Movable::getBoundingBox
const AxisAlignedBox & getBoundingBox(void) const
Retrieves the local axis-aligned bounding box for this object.
OgreRenderable.h
OgreMovableObject.h
Ogre::TerrainQuadTreeNode::destroyCpuVertexData
void destroyCpuVertexData()
Ogre::StreamSerialiser
Utility class providing helper methods for reading / writing structured data held in a DataStream.
Definition: OgreStreamSerialiser.h:67
Ogre::TerrainQuadTreeNode::getLocalCentre
const Vector3 & getLocalCentre() const
Get the local centre of this node, relative to parent terrain centre.
Definition: OgreTerrainQuadTreeNode.h:234
Ogre::TerrainQuadTreeNode::VertexDataRecord::size
uint16 size
Size of the data along one edge.
Definition: OgreTerrainQuadTreeNode.h:297
Ogre::TerrainQuadTreeNode::Rend
Hook to the render queue.
Definition: OgreTerrainQuadTreeNode.h:361
Ogre::TerrainQuadTreeNode::postDeltaCalculation
void postDeltaCalculation(const Rect &rect)
Notify the node (and children) that deltas have finished being calculated.
Ogre::TerrainQuadTreeNode::Rend::getSquaredViewDepth
Real getSquaredViewDepth(const Camera *cam) const
Returns the camera-relative squared depth of this renderable.
Ogre::TerrainQuadTreeNode::updateVertexBuffer
void updateVertexBuffer(HardwareVertexBufferSharedPtr &posbuf, HardwareVertexBufferSharedPtr &deltabuf, const Rect &rect)
Ogre::uint
unsigned int uint
Definition: OgrePrerequisites.h:114
Ogre::TerrainQuadTreeNode::LodLevelList
vector< LodLevel * >::type LodLevelList
Definition: OgreTerrainQuadTreeNode.h:154
Ogre::TerrainQuadTreeNode::VertexDataRecord::gpuVertexDataDirty
bool gpuVertexDataDirty
Is the GPU vertex data out of date?
Definition: OgreTerrainQuadTreeNode.h:305
Ogre::TerrainQuadTreeNode::LodLevel::LodLevel
LodLevel()
Definition: OgreTerrainQuadTreeNode.h:151
Ogre::Renderable::Visitor
Visitor object that can be used to iterate over a collection of Renderable instances abstractly.
Definition: OgreRenderable.h:378
Ogre::TerrainQuadTreeNode::VertexDataRecord::resolution
uint16 resolution
Resolution of the data compared to the base terrain data (NOT number of vertices!)
Definition: OgreTerrainQuadTreeNode.h:295
Ogre::TerrainQuadTreeNode::DELTA_BUFFER
static unsigned short DELTA_BUFFER
Buffer binding used for holding delta values.
Definition: OgreTerrainQuadTreeNode.h:263
Ogre::TerrainQuadTreeNode::getLodCount
uint16 getLodCount() const
Get the number of LOD levels this node can represent itself (only > 1 for leaf nodes)
Ogre::Renderable
Abstract class defining the interface all renderable objects must implement.
Definition: OgreRenderable.h:64
Ogre::TerrainQuadTreeNode::getLodLevel
const LodLevel * getLodLevel(uint16 lod)
Get the LodLevel information for a given lod.
Ogre::TerrainQuadTreeNode::updateGpuVertexData
void updateGpuVertexData()
Ogre::TerrainQuadTreeNode::Rend::getLights
const LightList & getLights(void) const
Gets a list of lights, ordered relative to how close they are to this renderable.
Ogre::TerrainQuadTreeNode::getMaxHeight
Real getMaxHeight() const
Get the maximum height of the node.
Ogre::TerrainQuadTreeNode::Movable::~Movable
virtual ~Movable()
Ogre::TerrainQuadTreeNode::setLodTransition
void setLodTransition(float t)
Manually set the current LOD transition state, intended for internal use only.
Ogre::Real
float Real
Software floating point type.
Definition: OgrePrerequisites.h:70
Ogre::TerrainQuadTreeNode::createGpuVertexData
void createGpuVertexData()
Ogre::TerrainQuadTreeNode::getParent
TerrainQuadTreeNode * getParent() const
Get parent node.
Ogre::TerrainQuadTreeNode::isLeaf
bool isLeaf() const
Is this a leaf node (no children)
Ogre::TerrainQuadTreeNode::prepare
void prepare()
Prepare node and children (perform CPU tasks, may be background thread)
Ogre::TerrainQuadTreeNode::Movable::getBoundingRadius
Real getBoundingRadius(void) const
Retrieves the radius of the origin-centered bounding sphere for this object.
Ogre::TerrainQuadTreeNode::mBoundaryY
uint16 mBoundaryY
Definition: OgreTerrainQuadTreeNode.h:274
Ogre::TerrainQuadTreeNode::rectContainsNode
bool rectContainsNode(const Rect &rect)
Returns true if the given rectangle completely contains the terrain area that this node references.
Ogre::TerrainQuadTreeNode::mParent
TerrainQuadTreeNode * mParent
Definition: OgreTerrainQuadTreeNode.h:269
Ogre::vector
Definition: OgrePrerequisites.h:492
Ogre::TerrainQuadTreeNode::destroyGpuIndexData
void destroyGpuIndexData()
Ogre::TerrainQuadTreeNode::getAABB
const AxisAlignedBox & getAABB() const
Get the AABB (local coords) of this node.
Ogre::TerrainQuadTreeNode::unprepare
void unprepare()
Unprepare node and children (perform CPU tasks, may be background thread)
Ogre::TerrainQuadTreeNode::mLodLevels
LodLevelList mLodLevels
Definition: OgreTerrainQuadTreeNode.h:271
Ogre::TerrainQuadTreeNode::mRend
Rend * mRend
Definition: OgreTerrainQuadTreeNode.h:377
Ogre::TerrainQuadTreeNode::VertexDataRecord::gpuVertexData
VertexData * gpuVertexData
Definition: OgreTerrainQuadTreeNode.h:293
Ogre::TerrainQuadTreeNode::destroyGpuVertexData
void destroyGpuVertexData()
Ogre::TerrainQuadTreeNode::calculateCurrentLod
bool calculateCurrentLod(const Camera *cam, Real cFactor)
Calculate appropriate LOD for this node and children.
Ogre::IndexData
Summary class collecting together index data source information.
Definition: OgreVertexIndexData.h:243
Ogre::TerrainQuadTreeNode::mBoundingRadius
Real mBoundingRadius
Relative to mLocalCentre.
Definition: OgreTerrainQuadTreeNode.h:282
Ogre::Vector3
Standard 3-dimensional vector.
Definition: OgreVector3.h:52
Ogre::RenderOperation
'New' rendering operation using vertex buffers.
Definition: OgreRenderOperation.h:45
Ogre::TerrainQuadTreeNode::getTerrain
Terrain * getTerrain() const
Get ultimate parent terrain.
Ogre::RenderQueue
Class to manage the scene object rendering queue.
Definition: OgreRenderQueue.h:93
Ogre::TerrainQuadTreeNode::POSITION_BUFFER
static unsigned short POSITION_BUFFER
Buffer binding used for holding positions.
Definition: OgreTerrainQuadTreeNode.h:261
Ogre::TerrainQuadTreeNode::getLodTransition
float getLodTransition() const
Get the transition state between the current LOD and the next lower one (only valid after calculateCu...
Definition: OgreTerrainQuadTreeNode.h:256
Ogre::TerrainQuadTreeNode::mSize
uint16 mSize
The number of vertices at the original terrain resolution this node encompasses.
Definition: OgreTerrainQuadTreeNode.h:276
Ogre::TerrainQuadTreeNode::mBaseLod
uint16 mBaseLod
Definition: OgreTerrainQuadTreeNode.h:277
Ogre::TerrainQuadTreeNode::Movable::Movable
Movable(TerrainQuadTreeNode *parent)
Ogre::TerrainQuadTreeNode::Rend::getMaterial
const MaterialPtr & getMaterial(void) const
Retrieves a weak reference to the material this renderable object uses.
Ogre::TerrainQuadTreeNode::createCpuVertexData
void createCpuVertexData()

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.