#include <OgreStaticGeometry.h>
Public Types | |||||||
typedef std::list < OptimisedSubMeshGeometry * > | OptimisedSubMeshGeometryList | ||||||
typedef std::vector < SubMeshLodGeometryLink > | SubMeshLodGeometryLinkList | ||||||
typedef std::map< SubMesh *, SubMeshLodGeometryLinkList * > | SubMeshGeometryLookup | ||||||
typedef std::vector < QueuedSubMesh * > | QueuedSubMeshList | ||||||
typedef std::vector < QueuedGeometry * > | QueuedGeometryList | ||||||
typedef std::map< uint32, Region * > | 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. | |||||||
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) | ||||||
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.
| |||||||
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 std::map< size_t, size_t > | 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. | |||||||
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. | |||||||
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... |
Definition at line 113 of file OgreStaticGeometry.h.
typedef std::list<OptimisedSubMeshGeometry*> Ogre::StaticGeometry::OptimisedSubMeshGeometryList |
Definition at line 140 of file OgreStaticGeometry.h.
typedef std::vector<SubMeshLodGeometryLink> Ogre::StaticGeometry::SubMeshLodGeometryLinkList |
Definition at line 148 of file OgreStaticGeometry.h.
typedef std::map<SubMesh*, SubMeshLodGeometryLinkList*> Ogre::StaticGeometry::SubMeshGeometryLookup |
Definition at line 149 of file OgreStaticGeometry.h.
typedef std::vector<QueuedSubMesh*> Ogre::StaticGeometry::QueuedSubMeshList |
Definition at line 163 of file OgreStaticGeometry.h.
typedef std::vector<QueuedGeometry*> Ogre::StaticGeometry::QueuedGeometryList |
Definition at line 172 of file OgreStaticGeometry.h.
typedef std::map<uint32, Region*> Ogre::StaticGeometry::RegionMap |
Indexed region map based on packed x/y/z region index, 10 bits for each axis.
Definition at line 468 of file OgreStaticGeometry.h.
typedef std::map<size_t, size_t> Ogre::StaticGeometry::IndexRemap [protected] |
Definition at line 538 of file OgreStaticGeometry.h.
Ogre::StaticGeometry::StaticGeometry | ( | SceneManager * | owner, | |
const String & | name | |||
) |
virtual Ogre::StaticGeometry::~StaticGeometry | ( | ) | [virtual] |
Destructor.
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.
Get the region using a packed index, returns null if it doesn't exist.
virtual void Ogre::StaticGeometry::getRegionIndexes | ( | const Vector3 & | point, | |
ushort & | x, | |||
ushort & | y, | |||
ushort & | z | |||
) | [protected, virtual] |
Get the region indexes for a point.
virtual uint32 Ogre::StaticGeometry::packIndex | ( | ushort | x, | |
ushort | y, | |||
ushort | z | |||
) | [protected, virtual] |
Pack 3 indexes into a single index value.
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 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 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.
SubMeshLodGeometryLinkList* Ogre::StaticGeometry::determineGeometry | ( | SubMesh * | sm | ) | [protected] |
Look up or calculate the geometry data to use for this SubMesh.
void Ogre::StaticGeometry::splitGeometry | ( | VertexData * | vd, | |
IndexData * | id, | |||
SubMeshLodGeometryLink * | targetGeomLink | |||
) | [protected] |
Split some shared geometry into dedicated geometry.
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 544 of file OgreStaticGeometry.h.
void Ogre::StaticGeometry::remapIndexes | ( | T * | src, | |
T * | dst, | |||
const IndexRemap & | remap, | |||
size_t | numIndexes | |||
) | [protected] |
const String& Ogre::StaticGeometry::getName | ( | void | ) | const |
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.
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.
Must be called before 'build'.
node | Pointer to the node to use to provide a set of Entity templates |
virtual void Ogre::StaticGeometry::build | ( | void | ) | [virtual] |
Build the geometry.
virtual void Ogre::StaticGeometry::destroy | ( | void | ) | [virtual] |
Destroys all the built geometry state (reverse of build).
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::setRenderingDistance | ( | Real | dist | ) | [virtual] |
Sets the distance at which batches are no longer rendered.
dist | Distance beyond which the batches will not be rendered (the default is 0, which means batches are always rendered). |
Definition at line 652 of file OgreStaticGeometry.h.
virtual Real Ogre::StaticGeometry::getRenderingDistance | ( | void | ) | const [virtual] |
Gets the distance at which batches are no longer rendered.
Definition at line 658 of file OgreStaticGeometry.h.
virtual Real Ogre::StaticGeometry::getSquaredRenderingDistance | ( | void | ) | const [virtual] |
Gets the squared distance at which batches are no longer rendered.
Definition at line 661 of file OgreStaticGeometry.h.
virtual void Ogre::StaticGeometry::setVisible | ( | bool | visible | ) | [virtual] |
Hides or shows all the batches.
virtual bool Ogre::StaticGeometry::isVisible | ( | void | ) | const [virtual] |
virtual void Ogre::StaticGeometry::setCastShadows | ( | bool | castShadows | ) | [virtual] |
Sets whether this geometry should cast shadows.
virtual bool Ogre::StaticGeometry::getCastShadows | ( | void | ) | [virtual] |
Will the geometry from this object cast shadows?
Definition at line 689 of file OgreStaticGeometry.h.
virtual void Ogre::StaticGeometry::setRegionDimensions | ( | const Vector3 & | size | ) | [virtual] |
Sets the size of a single region of geometry.
size | Vector3 expressing the 3D size of each region. |
Definition at line 701 of file OgreStaticGeometry.h.
virtual const Vector3& Ogre::StaticGeometry::getRegionDimensions | ( | void | ) | const [virtual] |
virtual void Ogre::StaticGeometry::setOrigin | ( | const Vector3 & | origin | ) | [virtual] |
Sets the origin of the geometry.
size | Vector3 expressing the 3D origin of the geometry. |
Definition at line 718 of file OgreStaticGeometry.h.
virtual const Vector3& Ogre::StaticGeometry::getOrigin | ( | void | ) | const [virtual] |
virtual void Ogre::StaticGeometry::setRenderQueueGroup | ( | uint8 | queueID | ) | [virtual] |
Sets the render queue group this object will be rendered through.
queueID | Enumerated value of the queue group to use. |
virtual uint8 Ogre::StaticGeometry::getRenderQueueGroup | ( | void | ) | const [virtual] |
Gets the queue group for this entity, see setRenderQueueGroup for full details.
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.
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. |
RegionIterator Ogre::StaticGeometry::getRegionIterator | ( | void | ) |
Get an iterator over the regions in this geometry.
virtual void Ogre::StaticGeometry::dump | ( | const String & | filename | ) | const [virtual] |
Dump the contents of this StaticGeometry to a file for diagnostic purposes.
void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz, | |
const char * | file, | |||
int | line, | |||
const char * | func | |||
) | [inherited] |
void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz | ) | [inherited] |
Definition at line 67 of file OgreMemoryAllocatedObject.h.
void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz, | |
void * | ptr | |||
) | [inherited] |
void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz, | |
const char * | file, | |||
int | line, | |||
const char * | func | |||
) | [inherited] |
void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz | ) | [inherited] |
Definition at line 84 of file OgreMemoryAllocatedObject.h.
void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr | ) | [inherited] |
Definition at line 89 of file OgreMemoryAllocatedObject.h.
void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr, | |
void * | ||||
) | [inherited] |
Definition at line 95 of file OgreMemoryAllocatedObject.h.
void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr, | |
const char * | , | |||
int | , | |||
const char * | ||||
) | [inherited] |
Definition at line 101 of file OgreMemoryAllocatedObject.h.
void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr | ) | [inherited] |
Definition at line 106 of file OgreMemoryAllocatedObject.h.
void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr, | |
const char * | , | |||
int | , | |||
const char * | ||||
) | [inherited] |
Definition at line 112 of file OgreMemoryAllocatedObject.h.
SceneManager* Ogre::StaticGeometry::mOwner [protected] |
Definition at line 471 of file OgreStaticGeometry.h.
String Ogre::StaticGeometry::mName [protected] |
Definition at line 472 of file OgreStaticGeometry.h.
bool Ogre::StaticGeometry::mBuilt [protected] |
Definition at line 473 of file OgreStaticGeometry.h.
Real Ogre::StaticGeometry::mUpperDistance [protected] |
Definition at line 474 of file OgreStaticGeometry.h.
Real Ogre::StaticGeometry::mSquaredUpperDistance [protected] |
Definition at line 475 of file OgreStaticGeometry.h.
bool Ogre::StaticGeometry::mCastShadows [protected] |
Definition at line 476 of file OgreStaticGeometry.h.
Vector3 Ogre::StaticGeometry::mRegionDimensions [protected] |
Definition at line 477 of file OgreStaticGeometry.h.
Vector3 Ogre::StaticGeometry::mHalfRegionDimensions [protected] |
Definition at line 478 of file OgreStaticGeometry.h.
Vector3 Ogre::StaticGeometry::mOrigin [protected] |
Definition at line 479 of file OgreStaticGeometry.h.
bool Ogre::StaticGeometry::mVisible [protected] |
Definition at line 480 of file OgreStaticGeometry.h.
uint8 Ogre::StaticGeometry::mRenderQueueID [protected] |
The render queue to use when rendering this object.
Definition at line 482 of file OgreStaticGeometry.h.
bool Ogre::StaticGeometry::mRenderQueueIDSet [protected] |
Flags whether the RenderQueue's default should be used.
Definition at line 484 of file OgreStaticGeometry.h.
Definition at line 486 of file OgreStaticGeometry.h.
List of geometry which has been optimised for SubMesh use This is the primary storage used for cleaning up later.
Definition at line 490 of file OgreStaticGeometry.h.
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 496 of file OgreStaticGeometry.h.
RegionMap Ogre::StaticGeometry::mRegionMap [protected] |
Copyright © 2008 Torus Knot Software Ltd
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Sep 27 22:07:27 2009