OGRE: Ogre::StaticGeometry Class Reference - OGRE Documentation

Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes

# Ogre::StaticGeometry Class Reference
[Scene]

Pre-transforms and batches up meshes for efficient use as static geometry in a scene. More...

`#include <OgreStaticGeometry.h>`

Inheritance diagram for Ogre::StaticGeometry:
[legend]

List of all members.

## Classes
class | GeometryBucket
| A GeometryBucket is a the lowest level bucket where geometry with the same vertex & index format is stored. More...
class | LODBucket
| A LODBucket is a collection of smaller buckets with the same LOD. More...
class | MaterialBucket
| A MaterialBucket is a collection of smaller buckets with the same Material (and implicitly the same LOD). More...
class | OptimisedSubMeshGeometry
| Struct holding geometry optimised per SubMesh / lod level, ready for copying to instances. More...
struct | QueuedGeometry
| Structure recording a queued geometry for low level builds. More...
struct | QueuedSubMesh
| Structure recording a queued submesh for the build. More...
class | Region
| The details of a topological region which is the highest level of partitioning for this class. More...
struct | SubMeshLodGeometryLink
| Saved link between SubMesh at a LOD and vertex/index data May point to original or optimised geometry. More...
## Public Types
typedef list < OptimisedSubMeshGeometry * > ::type | OptimisedSubMeshGeometryList
typedef vector < SubMeshLodGeometryLink > ::type | SubMeshLodGeometryLinkList
typedef map< SubMesh *, SubMeshLodGeometryLinkList * > ::type | SubMeshGeometryLookup
typedef vector< QueuedSubMesh * > ::type | QueuedSubMeshList
typedef vector< QueuedGeometry * > ::type | QueuedGeometryList
typedef map< uint32, Region * > ::type | RegionMap
| Indexed region map based on packed x/y/z region index, 10 bits for each axis.
typedef MapIterator< RegionMap > | RegionIterator
| Iterator for iterating over contained regions.
## Public Member Functions
| StaticGeometry (SceneManager *owner, const String &name)
| Constructor; do not use directly (.
virtual | ~StaticGeometry ()
| Destructor.
const String & | getName (void) const
| Get the name of this object.
virtual void | addEntity (Entity *ent, const Vector3 &position, const Quaternion &orientation=Quaternion::IDENTITY, const Vector3 &scale=Vector3::UNIT_SCALE)
| Adds an Entity to the static geometry.
virtual void | addSceneNode (const SceneNode *node)
| Adds all the Entity objects attached to a SceneNode and all it's children to the static geometry.
virtual void | build (void)
| Build the geometry.
virtual void | destroy (void)
| Destroys all the built geometry state (reverse of build).
virtual void | reset (void)
| Clears any of the entities / nodes added to this geometry and destroys anything which has already been built.
virtual void | setRenderingDistance (Real dist)
| Sets the distance at which batches are no longer rendered.
virtual Real | getRenderingDistance (void) const
| Gets the distance at which batches are no longer rendered.
virtual Real | getSquaredRenderingDistance (void) const
| Gets the squared distance at which batches are no longer rendered.
virtual void | setVisible (bool visible)
| Hides or shows all the batches.
virtual bool | isVisible (void) const
| Are the batches visible?
virtual void | setCastShadows (bool castShadows)
| Sets whether this geometry should cast shadows.
virtual bool | getCastShadows (void)
| Will the geometry from this object cast shadows?
virtual void | setRegionDimensions (const Vector3 &size)
| Sets the size of a single region of geometry.
virtual const Vector3 & | getRegionDimensions (void) const
| Gets the size of a single batch of geometry.
virtual void | setOrigin (const Vector3 &origin)
| Sets the origin of the geometry.
virtual const Vector3 & | getOrigin (void) const
| Gets the origin of this geometry.
void | setVisibilityFlags (uint32 flags)
| Sets the visibility flags of all the regions at once.
uint32 | getVisibilityFlags () const
| Returns the visibility flags of the regions.
virtual void | setRenderQueueGroup (uint8 queueID)
| Sets the render queue group this object will be rendered through.
virtual uint8 | getRenderQueueGroup (void) const
| Gets the queue group for this entity, see setRenderQueueGroup for full details.
void | visitRenderables (Renderable::Visitor *visitor, bool debugRenderables=false)
RegionIterator | getRegionIterator (void)
| Get an iterator over the regions in this geometry.
virtual void | dump (const String &filename) const
| Dump the contents of this StaticGeometry to a file for diagnostic purposes.
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 * | operator new (size_t sz, void *ptr)
| placement operator new
void * | operator new[] (size_t sz, const char *file, int line, const char *func)
| array operator new, with debug line info
void * | operator new[] (size_t sz)
void | operator delete (void *ptr)
void | operator delete (void *ptr, void *)
void | operator delete (void *ptr, const char *, int, const char *)
void | operator delete[] (void *ptr)
void | operator delete[] (void *ptr, const char *, int, const char *)
## Protected Types
typedef map< size_t, size_t >::type | IndexRemap
## Protected Member Functions
virtual Region * | getRegion (const AxisAlignedBox &bounds, bool autoCreate)
| Virtual method for getting a region most suitable for the passed in bounds.
virtual Region * | getRegion (const Vector3 &point, bool autoCreate)
| Get the region within which a point lies.
virtual Region * | getRegion (ushort x, ushort y, ushort z, bool autoCreate)
| Get the region using indexes.
virtual Region * | getRegion (uint32 index)
| Get the region using a packed index, returns null if it doesn't exist.
virtual void | getRegionIndexes (const Vector3 &point, ushort &x, ushort &y, ushort &z)
| Get the region indexes for a point.
virtual uint32 | packIndex (ushort x, ushort y, ushort z)
| Pack 3 indexes into a single index value.
virtual Real | getVolumeIntersection (const AxisAlignedBox &box, ushort x, ushort y, ushort z)
| Get the volume intersection for an indexed region with some bounds.
virtual AxisAlignedBox | getRegionBounds (ushort x, ushort y, ushort z)
| Get the bounds of an indexed region.
virtual Vector3 | getRegionCentre (ushort x, ushort y, ushort z)
| Get the centre of an indexed region.
virtual AxisAlignedBox | calculateBounds (VertexData *vertexData, const Vector3 &position, const Quaternion &orientation, const Vector3 &scale)
| Calculate world bounds from a set of vertex data.
SubMeshLodGeometryLinkList * | determineGeometry (SubMesh *sm)
| Look up or calculate the geometry data to use for this SubMesh.
void | splitGeometry (VertexData *vd, IndexData *id, SubMeshLodGeometryLink *targetGeomLink)
| Split some shared geometry into dedicated geometry.
template<typename T >
void | buildIndexRemap (T *pBuffer, size_t numIndexes, IndexRemap &remap)
| Method for figuring out which vertices are used by an index buffer and calculating a remap lookup for a vertex buffer just containing those vertices.
template<typename T >
void | remapIndexes (T *src, T *dst, const IndexRemap &remap, size_t numIndexes)
| Method for altering indexes based on a remap.
## Protected Attributes
SceneManager * | mOwner
String | mName
bool | mBuilt
Real | mUpperDistance
Real | mSquaredUpperDistance
bool | mCastShadows
Vector3 | mRegionDimensions
Vector3 | mHalfRegionDimensions
Vector3 | mOrigin
bool | mVisible
uint8 | mRenderQueueID
| The render queue to use when rendering this object.
bool | mRenderQueueIDSet
| Flags whether the RenderQueue's default should be used.
uint32 | mVisibilityFlags
| Stores the visibility flags for the regions.
QueuedSubMeshList | mQueuedSubMeshes
OptimisedSubMeshGeometryList | mOptimisedSubMeshGeometryList
| List of geometry which has been optimised for SubMesh use This is the primary storage used for cleaning up later.
SubMeshGeometryLookup | mSubMeshGeometryLookup
| Cached links from SubMeshes to (potentially optimised) geometry This is not used for deletion since the lookup may reference original vertex data.
RegionMap | mRegionMap
| Map of regions.

## Detailed Description

Pre-transforms and batches up meshes for efficient use as static geometry in a scene.

Remarks:
  Modern graphics cards (GPUs) prefer to receive geometry in large batches. It is orders of magnitude faster to render 10 batches of 10,000 triangles than it is to render 10,000 batches of 10 triangles, even though both result in the same number of on-screen triangles.

  Therefore it is important when you are rendering a lot of geometry to batch things up into as few rendering calls as possible. This class allows you to build a batched object from a series of entities in order to benefit from this behaviour. Batching has implications of it's own though:
  - Batched geometry cannot be subdivided; that means that the whole group will be displayed, or none of it will. This obivously has culling issues.
  - A single world transform must apply to the entire batch. Therefore once you have batched things, you can't move them around relative to each other. That's why this class is most useful when dealing with static geometry (hence the name). In addition, geometry is effectively duplicated, so if you add 3 entities based on the same mesh in different positions, they will use 3 times the geometry space than the movable version (which re-uses the same geometry). So you trade memory and flexibility of movement for pure speed when using this class.
  - A single material must apply for each batch. In fact this class allows you to use multiple materials, but you should be aware that internally this means that there is one batch per material. Therefore you won't gain as much benefit from the batching if you use many different materials; try to keep the number down.

  In order to retain some sort of culling, this class will batch up meshes in localised regions. The size and shape of these blocks is controlled by the SceneManager which constructs this object, since it makes sense to batch things up in the most appropriate way given the existing partitioning of the scene.

  The LOD settings of both the Mesh and the Materials used in constructing this static geometry will be respected. This means that if you use meshes/materials which have LOD, batches in the distance will have a lower polygon count or material detail to those in the foreground. Since each mesh might have different LOD distances, during build the furthest distance at each LOD level from all meshes in that region is used. This means all the LOD levels change at the same time, but at the furthest distance of any of them (so quality is not degraded). Be aware that using Mesh LOD in this class will further increase the memory required. Only generated LOD is supported for meshes.

  There are 2 ways you can add geometry to this class; you can add Entity objects directly with predetermined positions, scales and orientations, or you can add an entire SceneNode and it's subtree, including all the objects attached to it. Once you've added everthing you need to, you have to call build() the fix the geometry in place.

Note:
  This class is not a replacement for world geometry (

See also:
  SceneManager::setWorldGeometry). The single most efficient way to render large amounts of static geometry is to use a SceneManager which is specialised for dealing with that particular world structure. However, this class does provide you with a good 'halfway house' between generalised movable geometry (Entity) which works with all SceneManagers but isn't efficient when using very large numbers, and highly specialised world geometry which is extremely fast but not generic and typically requires custom world editors.

  You should not construct instances of this class directly; instead, cal SceneManager::createStaticGeometry, which gives the SceneManager the option of providing you with a specialised version of this class if it wishes, and also handles the memory management for you like other classes.

Note:
  Warning: this class only works with indexed triangle lists at the moment, do not pass it triangle strips, fans or lines / points, or unindexed geometry.

Definition at line 120 of file OgreStaticGeometry.h.

## Member Typedef Documentation

typedef map<size_t, size_t>::type Ogre::StaticGeometry::IndexRemap`[protected]`

Definition at line 553 of file OgreStaticGeometry.h.

typedef list<OptimisedSubMeshGeometry*>::type Ogre::StaticGeometry::OptimisedSubMeshGeometryList

Definition at line 147 of file OgreStaticGeometry.h.

typedef vector<QueuedGeometry*>::type Ogre::StaticGeometry::QueuedGeometryList

Definition at line 179 of file OgreStaticGeometry.h.

typedef vector<QueuedSubMesh*>::type Ogre::StaticGeometry::QueuedSubMeshList

Definition at line 170 of file OgreStaticGeometry.h.

typedef MapIterator<RegionMap> Ogre::StaticGeometry::RegionIterator

Iterator for iterating over contained regions.

Definition at line 762 of file OgreStaticGeometry.h.

typedef map<uint32, Region*>::type Ogre::StaticGeometry::RegionMap

Indexed region map based on packed x/y/z region index, 10 bits for each axis.

Remarks:
  Regions are indexed 0-1023 in all axes, where for example region 0 in the x axis begins at mOrigin.x + (mRegionDimensions.x * -512), and region 1023 ends at mOrigin + (mRegionDimensions.x * 512).

Definition at line 481 of file OgreStaticGeometry.h.

typedef map<SubMesh*, SubMeshLodGeometryLinkList*>::type Ogre::StaticGeometry::SubMeshGeometryLookup

Definition at line 156 of file OgreStaticGeometry.h.

typedef vector<SubMeshLodGeometryLink>::type Ogre::StaticGeometry::SubMeshLodGeometryLinkList

Definition at line 155 of file OgreStaticGeometry.h.

## Constructor & Destructor Documentation

Ogre::StaticGeometry::StaticGeometry | ( | SceneManager * | owner,
|  | const String & | name |
| ) |  |  |

Constructor; do not use directly (.

See also:
  SceneManager::createStaticGeometry)

virtual Ogre::StaticGeometry::~StaticGeometry | ( |  | ) | `[virtual]`

Destructor.

## Member Function Documentation

virtual void Ogre::StaticGeometry::addEntity | ( | Entity * | ent,
|  | const Vector3 & | position,
|  | const Quaternion & | orientation = `Quaternion::IDENTITY`,
|  | const Vector3 & | scale = `Vector3::UNIT_SCALE` |
| ) |  |  | `[virtual]`

Adds an Entity to the static geometry.

Remarks:
  This method takes an existing Entity and adds its details to the list of elements to include when building. Note that the Entity itself is not copied or referenced in this method; an Entity is passed simply so that you can change the materials of attached SubEntity objects if you want. You can add the same Entity instance multiple times with different material settings completely safely, and destroy the Entity before destroying this StaticGeometry if you like. The Entity passed in is simply used as a definition.

Note:
  Must be called before 'build'.

Parameters:

  | ent | The Entity to use as a definition (the Mesh and Materials referenced will be recorded for the build call).
  | position | The world position at which to add this Entity
  | orientation | The world orientation at which to add this Entity
  | scale | The scale at which to add this entity

virtual void Ogre::StaticGeometry::addSceneNode | ( | const SceneNode * | node | ) | `[virtual]`

Adds all the Entity objects attached to a SceneNode and all it's children to the static geometry.

Remarks:
  This method performs just like addEntity, except it adds all the entities attached to an entire sub-tree to the geometry. The position / orientation / scale parameters are taken from the node structure instead of being specified manually.

Note:
  The SceneNode you pass in will not be automatically detached from it's parent, so if you have this node already attached to the scene graph, you will need to remove it if you wish to avoid the overhead of rendering both the original objects and their new static versions! We don't do this for you incase you are preparing this in advance and so don't want the originals detached yet.
  Must be called before 'build'.

Parameters:

  | node | Pointer to the node to use to provide a set of Entity templates

virtual void Ogre::StaticGeometry::build | ( | void |  | ) | `[virtual]`

Build the geometry.

Remarks:
  Based on all the entities which have been added, and the batching options which have been set, this method constructs the batched geometry structures required. The batches are added to the scene and will be rendered unless you specifically hide them.

Note:
  Once you have called this method, you can no longer add any more entities.

template<typename T >

void Ogre::StaticGeometry::buildIndexRemap | ( | T * | pBuffer,
|  | size_t | numIndexes,
|  | IndexRemap & | remap |
| ) |  |  | `[protected]`

Method for figuring out which vertices are used by an index buffer and calculating a remap lookup for a vertex buffer just containing those vertices.

Definition at line 559 of file OgreStaticGeometry.h.

virtual AxisAlignedBox Ogre::StaticGeometry::calculateBounds | ( | VertexData * | vertexData,
|  | const Vector3 & | position,
|  | const Quaternion & | orientation,
|  | const Vector3 & | scale |
| ) |  |  | `[protected, virtual]`

Calculate world bounds from a set of vertex data.

virtual void Ogre::StaticGeometry::destroy | ( | void |  | ) | `[virtual]`

Destroys all the built geometry state (reverse of build).

Remarks:
  You can call build() again after this and it will pick up all the same entities / nodes you queued last time.

SubMeshLodGeometryLinkList* Ogre::StaticGeometry::determineGeometry | ( | SubMesh * | sm | ) | `[protected]`

Look up or calculate the geometry data to use for this SubMesh.

virtual void Ogre::StaticGeometry::dump | ( | const String & | filename | ) | const`[virtual]`

Dump the contents of this StaticGeometry to a file for diagnostic purposes.

virtual bool Ogre::StaticGeometry::getCastShadows | ( | void |  | ) | `[virtual]`

Will the geometry from this object cast shadows?

Definition at line 704 of file OgreStaticGeometry.h.

const String& Ogre::StaticGeometry::getName | ( | void |  | ) | const

Get the name of this object.

Definition at line 591 of file OgreStaticGeometry.h.

virtual const Vector3& Ogre::StaticGeometry::getOrigin | ( | void |  | ) | const`[virtual]`

Gets the origin of this geometry.

Definition at line 735 of file OgreStaticGeometry.h.

virtual Region* Ogre::StaticGeometry::getRegion | ( | uint32 | index | ) | `[protected, virtual]`

Get the region using a packed index, returns null if it doesn't exist.

virtual Region* Ogre::StaticGeometry::getRegion | ( | const AxisAlignedBox & | bounds,
|  | bool | autoCreate |
| ) |  |  | `[protected, virtual]`

Virtual method for getting a region most suitable for the passed in bounds.

Can be overridden by subclasses.

virtual Region* Ogre::StaticGeometry::getRegion | ( | const Vector3 & | point,
|  | bool | autoCreate |
| ) |  |  | `[protected, virtual]`

Get the region within which a point lies.

virtual Region* Ogre::StaticGeometry::getRegion | ( | ushort | x,
|  | ushort | y,
|  | ushort | z,
|  | bool | autoCreate |
| ) |  |  | `[protected, virtual]`

Get the region using indexes.

virtual AxisAlignedBox Ogre::StaticGeometry::getRegionBounds | ( | ushort | x,
|  | ushort | y,
|  | ushort | z |
| ) |  |  | `[protected, virtual]`

Get the bounds of an indexed region.

virtual Vector3 Ogre::StaticGeometry::getRegionCentre | ( | ushort | x,
|  | ushort | y,
|  | ushort | z |
| ) |  |  | `[protected, virtual]`

Get the centre of an indexed region.

virtual const Vector3& Ogre::StaticGeometry::getRegionDimensions | ( | void |  | ) | const`[virtual]`

Gets the size of a single batch of geometry.

Definition at line 721 of file OgreStaticGeometry.h.

virtual void Ogre::StaticGeometry::getRegionIndexes | ( | const Vector3 & | point,
|  | ushort & | x,
|  | ushort & | y,
|  | ushort & | z |
| ) |  |  | `[protected, virtual]`

Get the region indexes for a point.

RegionIterator Ogre::StaticGeometry::getRegionIterator | ( | void |  | ) |

Get an iterator over the regions in this geometry.

virtual Real Ogre::StaticGeometry::getRenderingDistance | ( | void |  | ) | const`[virtual]`

Gets the distance at which batches are no longer rendered.

Definition at line 673 of file OgreStaticGeometry.h.

virtual uint8 Ogre::StaticGeometry::getRenderQueueGroup | ( | void |  | ) | const`[virtual]`

Gets the queue group for this entity, see setRenderQueueGroup for full details.

virtual Real Ogre::StaticGeometry::getSquaredRenderingDistance | ( | void |  | ) | const`[virtual]`

Gets the squared distance at which batches are no longer rendered.

Definition at line 676 of file OgreStaticGeometry.h.

uint32 Ogre::StaticGeometry::getVisibilityFlags | ( |  | ) | const

Returns the visibility flags of the regions.

virtual Real Ogre::StaticGeometry::getVolumeIntersection | ( | const AxisAlignedBox & | box,
|  | ushort | x,
|  | ushort | y,
|  | ushort | z |
| ) |  |  | `[protected, virtual]`

Get the volume intersection for an indexed region with some bounds.

virtual bool Ogre::StaticGeometry::isVisible | ( | void |  | ) | const`[virtual]`

Are the batches visible?

Definition at line 683 of file OgreStaticGeometry.h.

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr,
|  | const char * | ,
|  | int | ,
|  | const char * |  |
| ) |  |  | `[inherited]`

Definition at line 107 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr | ) | `[inherited]`

Definition at line 95 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr,
|  | void * |  |
| ) |  |  | `[inherited]`

Definition at line 101 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr | ) | `[inherited]`

Definition at line 112 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr,
|  | const char * | ,
|  | int | ,
|  | const char * |  |
| ) |  |  | `[inherited]`

Definition at line 118 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz | ) | `[inherited]`

Definition at line 72 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz,
|  | const char * | file,
|  | int | line,
|  | const char * | func |
| ) |  |  | `[inherited]`

operator new, with debug line info

Definition at line 67 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz,
|  | void * | ptr |
| ) |  |  | `[inherited]`

placement operator new

Definition at line 78 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz,
|  | const char * | file,
|  | int | line,
|  | const char * | func |
| ) |  |  | `[inherited]`

array operator new, with debug line info

Definition at line 85 of file OgreMemoryAllocatedObject.h.

template<class Alloc >

void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz | ) | `[inherited]`

Definition at line 90 of file OgreMemoryAllocatedObject.h.

virtual uint32 Ogre::StaticGeometry::packIndex | ( | ushort | x,
|  | ushort | y,
|  | ushort | z |
| ) |  |  | `[protected, virtual]`

Pack 3 indexes into a single index value.

template<typename T >

void Ogre::StaticGeometry::remapIndexes | ( | T * | src,
|  | T * | dst,
|  | const IndexRemap & | remap,
|  | size_t | numIndexes |
| ) |  |  | `[protected]`

Method for altering indexes based on a remap.

Definition at line 572 of file OgreStaticGeometry.h.

virtual void Ogre::StaticGeometry::reset | ( | void |  | ) | `[virtual]`

Clears any of the entities / nodes added to this geometry and destroys anything which has already been built.

virtual void Ogre::StaticGeometry::setCastShadows | ( | bool | castShadows | ) | `[virtual]`

Sets whether this geometry should cast shadows.

Remarks:
  No matter what the settings on the original entities, the StaticGeometry class defaults to not casting shadows. This is because, being static, unless you have moving lights you'd be better to use precalculated shadows of some sort. However, if you need them, you can enable them using this method. If the SceneManager is set up to use stencil shadows, edge lists will be copied from the underlying meshes on build. It is essential that all meshes support stencil shadows in this case.

Note:
  If you intend to use stencil shadows, you must set this to true before calling 'build' as well as making sure you set the scene's shadow type (that should always be the first thing you do anyway). You can turn shadows off temporarily but they can never be turned on if they were not at the time of the build.

virtual void Ogre::StaticGeometry::setOrigin | ( | const Vector3 & | origin | ) | `[virtual]`

Sets the origin of the geometry.

Remarks:
  This method allows you to configure the world centre of the geometry, thus the place which all regions surround. You probably don't need to mess with this unless you have a seriously large world, since the default set up can handle an area 1024 * mRegionDimensions, and the sparseness of population is no issue when it comes to rendering. The default is Vector3(0,0,0).

Note:
  Must be called before 'build'.

Parameters:

  | size | Vector3 expressing the 3D origin of the geometry.

Definition at line 733 of file OgreStaticGeometry.h.

virtual void Ogre::StaticGeometry::setRegionDimensions | ( | const Vector3 & | size | ) | `[virtual]`

Sets the size of a single region of geometry.

Remarks:
  This method allows you to configure the physical world size of each region, so you can balance culling against batch size. Entities will be fitted within the batch they most closely fit, and the eventual bounds of each batch may well be slightly larger than this if they overlap a little. The default is Vector3(1000, 1000, 1000).

Note:
  Must be called before 'build'.

Parameters:

  | size | Vector3 expressing the 3D size of each region.

Definition at line 716 of file OgreStaticGeometry.h.

virtual void Ogre::StaticGeometry::setRenderingDistance | ( | Real | dist | ) | `[virtual]`

Sets the distance at which batches are no longer rendered.

Remarks:
  This lets you turn off batches at a given distance. This can be useful for things like detail meshes (grass, foliage etc) and could be combined with a shader which fades the geometry out beforehand to lessen the effect.

Parameters:

  | dist | Distance beyond which the batches will not be rendered (the default is 0, which means batches are always rendered).

Definition at line 667 of file OgreStaticGeometry.h.

virtual void Ogre::StaticGeometry::setRenderQueueGroup | ( | uint8 | queueID | ) | `[virtual]`

Sets the render queue group this object will be rendered through.

Remarks:
  Render queues are grouped to allow you to more tightly control the ordering of rendered objects. If you do not call this method, all objects default to the default queue (RenderQueue::getDefaultQueueGroup), which is fine for most objects. You may want to alter this if you want to perform more complex rendering.

  See RenderQueue for more details.

Parameters:

  | queueID | Enumerated value of the queue group to use.

void Ogre::StaticGeometry::setVisibilityFlags | ( | uint32 | flags | ) |

Sets the visibility flags of all the regions at once.

virtual void Ogre::StaticGeometry::setVisible | ( | bool | visible | ) | `[virtual]`

Hides or shows all the batches.

void Ogre::StaticGeometry::splitGeometry | ( | VertexData * | vd,
|  | IndexData * | id,
|  | SubMeshLodGeometryLink * | targetGeomLink |
| ) |  |  | `[protected]`

Split some shared geometry into dedicated geometry.

void Ogre::StaticGeometry::visitRenderables | ( | Renderable::Visitor * | visitor,
|  | bool | debugRenderables = `false` |
| ) |  |  |

Method to allow a caller to abstractly iterate over the Renderable instances that this MovableObject will add to the render queue when asked, if any.

Parameters:

  | visitor | Pointer to a class implementing the Renderable::Visitor interface which will be called back for each Renderable which will be queued. Bear in mind that the state of the Renderable instances may not be finalised depending on when you call this.
  | debugRenderables | If false, only regular renderables will be visited (those for normal display). If true, debug renderables will be included too.

## Member Data Documentation

bool Ogre::StaticGeometry::mBuilt`[protected]`

Definition at line 486 of file OgreStaticGeometry.h.

bool Ogre::StaticGeometry::mCastShadows`[protected]`

Definition at line 489 of file OgreStaticGeometry.h.

Vector3 Ogre::StaticGeometry::mHalfRegionDimensions`[protected]`

Definition at line 491 of file OgreStaticGeometry.h.

String Ogre::StaticGeometry::mName`[protected]`

Definition at line 485 of file OgreStaticGeometry.h.

OptimisedSubMeshGeometryList Ogre::StaticGeometry::mOptimisedSubMeshGeometryList`[protected]`

List of geometry which has been optimised for SubMesh use This is the primary storage used for cleaning up later.

Definition at line 505 of file OgreStaticGeometry.h.

Vector3 Ogre::StaticGeometry::mOrigin`[protected]`

Definition at line 492 of file OgreStaticGeometry.h.

SceneManager* Ogre::StaticGeometry::mOwner`[protected]`

Definition at line 484 of file OgreStaticGeometry.h.

QueuedSubMeshList Ogre::StaticGeometry::mQueuedSubMeshes`[protected]`

Definition at line 501 of file OgreStaticGeometry.h.

Vector3 Ogre::StaticGeometry::mRegionDimensions`[protected]`

Definition at line 490 of file OgreStaticGeometry.h.

RegionMap Ogre::StaticGeometry::mRegionMap`[protected]`

Map of regions.

Definition at line 514 of file OgreStaticGeometry.h.

uint8 Ogre::StaticGeometry::mRenderQueueID`[protected]`

The render queue to use when rendering this object.

Definition at line 495 of file OgreStaticGeometry.h.

bool Ogre::StaticGeometry::mRenderQueueIDSet`[protected]`

Flags whether the RenderQueue's default should be used.

Definition at line 497 of file OgreStaticGeometry.h.

Real Ogre::StaticGeometry::mSquaredUpperDistance`[protected]`

Definition at line 488 of file OgreStaticGeometry.h.

SubMeshGeometryLookup Ogre::StaticGeometry::mSubMeshGeometryLookup`[protected]`

Cached links from SubMeshes to (potentially optimised) geometry This is not used for deletion since the lookup may reference original vertex data.

Definition at line 511 of file OgreStaticGeometry.h.

Real Ogre::StaticGeometry::mUpperDistance`[protected]`

Definition at line 487 of file OgreStaticGeometry.h.

uint32 Ogre::StaticGeometry::mVisibilityFlags`[protected]`

Stores the visibility flags for the regions.

Definition at line 499 of file OgreStaticGeometry.h.

bool Ogre::StaticGeometry::mVisible`[protected]`

Definition at line 493 of file OgreStaticGeometry.h.

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

- OgreStaticGeometry.h

Copyright © 2008 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Wed Nov 3 2010 19:25:02