OGRE-Next: Ogre::v1::SubEntity Class Reference

| OGRE-Next 3.0.0 Object-Oriented Graphics Rendering Engine

Loading...
Searching...
No Matches
Public Member Functions | List of all members
Ogre::v1::SubEntity Class Reference
Core | Component » Scene

Utility class which defines the sub-parts of an Entity. More...

`#include <OgreSubEntity.h>`

Inheritance diagram for Ogre::v1::SubEntity:
[legend]

## Public Member Functions
| ~SubEntity () override
| Destructor.
bool | _getBuffersMarkedForAnimation () const
| Are buffers already marked as vertex animated?
VertexData * | _getHardwareVertexAnimVertexData ()
| Advanced method to get the hardware morph vertex information.
TempBlendedBufferInfo * | _getSkelAnimTempBufferInfo ()
| Advanced method to get the temp buffer information for software skeletal animation.
VertexData * | _getSkelAnimVertexData ()
| Advanced method to get the temporarily blended vertex information for entities which are software skinned.
VertexData * | _getSoftwareVertexAnimVertexData ()
| Advanced method to get the temporarily blended software morph vertex information.
TempBlendedBufferInfo * | _getVertexAnimTempBufferInfo ()
| Advanced method to get the temp buffer information for software morph animation.
const TempBlendedBufferInfo * | _getVertexAnimTempBufferInfo () const
void | _markBuffersUnusedForAnimation ()
| Mark all vertex data as so far unanimated.
void | _markBuffersUsedForAnimation ()
| Mark all vertex data as animated.
void | _restoreBuffersForUnusedAnimation (bool hardwareAnimation)
| Internal method to copy original vertex data to the morph structures should there be no active animation in use.
void | _setNullDatablock () override
| Sets the datablock to a null pointer.
void | _updateCustomGpuParameter (const GpuProgramParameters_AutoConstantEntry &constantEntry, GpuProgramParameters *params) const override
| Overridden from Renderable to provide some custom behaviour.
bool | getCastsShadows () const override
| Method which reports whether this renderable would normally cast a shadow.
size_t | getIndexDataEndIndex () const
| Returns the current value of the start index used for drawing.
size_t | getIndexDataStartIndex () const
| Returns the current value of the start index used for drawing.
const LightList & | getLights () const override
| Gets a list of lights, ordered relative to how close they are to this renderable.
unsigned short | getNumWorldTransforms () const override
| Overridden - see Renderable.
Entity * | getParent () const
| Accessor to get parent Entity.
void | getRenderOperation (RenderOperation &op, bool casterPass) override
| Overridden - see Renderable.
Real | getSquaredViewDepth (const Camera *cam) const
| Overridden, see Renderable.
SubMesh * | getSubMesh () const
| Accessor method to read mesh data.
VertexData * | getVertexDataForBinding (bool casterPass)
| Retrieve the VertexData which should be used for GPU binding.
void | getWorldTransforms (Matrix4 *xform) const override
| Overridden - see Renderable.
void | resetIndexDataStartEndIndex ()
| Reset the custom start/end index to the default values.
void | setDatablock (HlmsDatablock *datablock) override
| Assigns a datablock (i.e. HLMS Material) to this renderable.
void | setDatablock (IdString datablockName)
| Make every setDatablock method from Renderable available.
void | setIndexDataEndIndex (size_t end_index)
| Tells this SubEntity to draw a subset of the SubMesh by adjusting the index buffer extents.
void | setIndexDataStartIndex (size_t start_index)
| Tells this SubEntity to draw a subset of the SubMesh by adjusting the index buffer extents.
void | setMaterial (const MaterialPtr &material) override
| Sets a Material to be used.
Public Member Functions inherited from Ogre::Renderable
| Renderable ()
virtual | ~Renderable ()
| Virtual destructor needed as class has virtual methods.
virtual void | _setHlmsHashes (uint32 hash, uint32 casterHash)
| Manually sets the hlms hashes. Don't call this directly.
void | addPoseWeight (size_t index, float w)
uint8 | getCurrentMaterialLod () const
const Vector4 & | getCustomParameter (size_t index) const
| Gets the custom value associated with this Renderable at the given index.
const CustomParameterMap & | getCustomParameters () const
HlmsDatablock * | getDatablock () const
const String & | getDatablockOrMaterialName () const
uint32 | getHlmsCasterHash () const
uint32 | getHlmsHash () const
MaterialPtr | getMaterial () const
| Retrieves the material this renderable object uses.
unsigned short | getNumPoses () const
virtual bool | getPolygonModeOverrideable () const
| Gets whether this renderable's chosen detail level can be overridden (downgraded) by the camera setting.
bool | getPoseHalfPrecision () const
bool | getPoseNormals () const
TexBufferPacked * | getPoseTexBuffer () const
float | getPoseWeight (size_t index) const
float * | getPoseWeights () const
uint8 | getRenderQueueSubGroup () const
bool | getUseIdentityProjection () const
| Returns whether or not to use an 'identity' projection.
bool | getUseIdentityView () const
| Returns whether or not to use an 'identity' view.
virtual bool | getUseIdentityViewProjMatrixIsDynamic () const
| Returns whether the Hlms implementation should evaluate getUseIdentityProjection per object at runtime, or if it can assume the Renderable will remain with the same setting until the datablock is flushed (performance optimization)
virtual bool | getUseIdentityWorldMatrix () const
| Returns whether the world matrix is an identity matrix.
virtual OGRE_DEPRECATED const Any & | getUserAny () const
UserObjectBindings & | getUserObjectBindings ()
| Return an instance of user objects binding associated with this class.
const UserObjectBindings & | getUserObjectBindings () const
| Return an instance of user objects binding associated with this class.
const VertexArrayObjectArray & | getVaos (VertexPass vertexPass) const
bool | hasCustomParameter (size_t index) const
| Checks whether a custom value is associated with this Renderable at the given index.
bool | hasSkeletonAnimation () const
virtual void | postRender (SceneManager *sm, RenderSystem *rsys)
| Called immediately after the Renderable has been rendered.
virtual bool | preRender (SceneManager *sm, RenderSystem *rsys)
| Called just prior to the Renderable being rendered.
void | removeCustomParameter (size_t index)
| Removes a custom value which is associated with this Renderable at the given index.
void | setCustomParameter (size_t index, const Vector4 &value)
| Sets a custom parameter for this Renderable, which may be used to drive calculations for this specific Renderable, like GPU program parameters.
void | setDatablock (IdString datablockName)
| Assigns a datablock (i.e.
void | setDatablockOrMaterialName (String materialName, String groupName)
| First tries to see if an HLMS datablock exist with the given name, if not, tries to search among low level materials.
void | setMaterialName (const String &name, const String &groupName)
| Sets the name of the Material to be used. Prefer using HLMS.
virtual void | setPolygonModeOverrideable (bool override)
| Sets whether this renderable's chosen detail level can be overridden (downgraded) by the camera setting.
void | setPoseWeight (size_t index, float w)
void | setRenderQueueSubGroup (uint8 subGroup)
| Sets the render queue sub group.
void | setUseIdentityProjection (bool useIdentityProjection)
| Sets whether or not to use an 'identity' projection.
void | setUseIdentityView (bool useIdentityView)
| Sets whether or not to use an 'identity' view.
virtual OGRE_DEPRECATED void | setUserAny (const Any &anything)

## Additional Inherited Members
Public Types inherited from Ogre::Renderable
typedef map< size_t, Vector4 >::type | CustomParameterMap
Static Public Member Functions inherited from Ogre::Renderable
static uint8 | getDefaultRenderQueueSubGroup ()
static void | setDefaultRenderQueueSubGroup (uint8 subGroup)
| Sets the default render queue sub group for all future Renderable instances.
Public Attributes inherited from Ogre::Renderable
uint8 | mCustomParameter
uint32 | mHlmsGlobalIndex
| Index in the vector holding this Rendrable reference in the HLMS datablock.
bool | mRenderableVisible
| Control visibility at Renderable (e.g.

## Detailed Description

Utility class which defines the sub-parts of an Entity.

Remarks
  Just as meshes are split into submeshes, an Entity is made up of potentially multiple SubMeshes. These are mainly here to provide the link between the Material which the SubEntity uses (which may be the default Material for the SubMesh or may have been changed for this object) and the SubMesh data.

  The SubEntity also allows the application some flexibility in the material properties for this section of a particular instance of this Mesh, e.g. tinting the windows on a car model.

  SubEntity instances are never created manually. They are created at the same time as their parent Entity by the SceneManager method createEntity.

## Constructor & Destructor Documentation

## ◆ ~SubEntity()

Ogre::v1::SubEntity::~SubEntity | ( |  | ) |
| override

Destructor.

References Entity.

## Member Function Documentation

## ◆ _getBuffersMarkedForAnimation()

bool Ogre::v1::SubEntity::_getBuffersMarkedForAnimation | ( |  | ) | const
| inline

Are buffers already marked as vertex animated?

## ◆ _getHardwareVertexAnimVertexData()

VertexData * Ogre::v1::SubEntity::_getHardwareVertexAnimVertexData | ( |  | ) |

Advanced method to get the hardware morph vertex information.

Note
  The positions/normals of the returned vertex data is in object space.

## ◆ _getSkelAnimTempBufferInfo()

TempBlendedBufferInfo * Ogre::v1::SubEntity::_getSkelAnimTempBufferInfo | ( |  | ) |

Advanced method to get the temp buffer information for software skeletal animation.

## ◆ _getSkelAnimVertexData()

VertexData * Ogre::v1::SubEntity::_getSkelAnimVertexData | ( |  | ) |

Advanced method to get the temporarily blended vertex information for entities which are software skinned.

Remarks
  Internal engine will eliminate software animation if possible, this information is unreliable unless added request for software animation via Entity::addSoftwareAnimationRequest.

Note
  The positions/normals of the returned vertex data is in object space.

## ◆ _getSoftwareVertexAnimVertexData()

VertexData * Ogre::v1::SubEntity::_getSoftwareVertexAnimVertexData | ( |  | ) |

Advanced method to get the temporarily blended software morph vertex information.

Remarks
  Internal engine will eliminate software animation if possible, this information is unreliable unless added request for software animation via Entity::addSoftwareAnimationRequest.

Note
  The positions/normals of the returned vertex data is in object space.

## ◆ _getVertexAnimTempBufferInfo() [1/2]

TempBlendedBufferInfo * Ogre::v1::SubEntity::_getVertexAnimTempBufferInfo | ( |  | ) |

Advanced method to get the temp buffer information for software morph animation.

## ◆ _getVertexAnimTempBufferInfo() [2/2]

const TempBlendedBufferInfo * Ogre::v1::SubEntity::_getVertexAnimTempBufferInfo | ( |  | ) | const

## ◆ _markBuffersUnusedForAnimation()

void Ogre::v1::SubEntity::_markBuffersUnusedForAnimation | ( |  | ) |

Mark all vertex data as so far unanimated.

## ◆ _markBuffersUsedForAnimation()

void Ogre::v1::SubEntity::_markBuffersUsedForAnimation | ( |  | ) |

Mark all vertex data as animated.

## ◆ _restoreBuffersForUnusedAnimation()

void Ogre::v1::SubEntity::_restoreBuffersForUnusedAnimation | ( | bool | hardwareAnimation | ) |

Internal method to copy original vertex data to the morph structures should there be no active animation in use.

## ◆ _setNullDatablock()

void Ogre::v1::SubEntity::_setNullDatablock | ( |  | ) |
| overridevirtual

Sets the datablock to a null pointer.

Use case: If you will be destroying an HlmsDatablock and all Renderables associated by it; it makes no sense to change the Renderable's datablock to a default one, only to be destroyed immediately after (you pay an unnecessary performance price).

Remarks
  Do not attempt to render a Renderable whose datablock has been set to null. It will crash. You can call setDatablock afterwards though. Use at your own risk, hence the _underscore. See http://ogre3d.org/forums/viewtopic.php?f=25&t=91791&p=534476#p534476

Reimplemented from Ogre::Renderable.

## ◆ _updateCustomGpuParameter()

void Ogre::v1::SubEntity::_updateCustomGpuParameter | ( | const GpuProgramParameters_AutoConstantEntry & | constantEntry,
|  | GpuProgramParameters * | params ) const
| overridevirtual

Overridden from Renderable to provide some custom behaviour.

Reimplemented from Ogre::Renderable.

## ◆ getCastsShadows()

bool Ogre::v1::SubEntity::getCastsShadows | ( |  | ) | const
| overridevirtual

Method which reports whether this renderable would normally cast a shadow.

Remarks
  Subclasses should override this if they could have been used to generate a shadow.

Reimplemented from Ogre::Renderable.

## ◆ getIndexDataEndIndex()

size_t Ogre::v1::SubEntity::getIndexDataEndIndex | ( |  | ) | const

Returns the current value of the start index used for drawing.

## ◆ getIndexDataStartIndex()

size_t Ogre::v1::SubEntity::getIndexDataStartIndex | ( |  | ) | const

Returns the current value of the start index used for drawing.

See also
  setIndexDataStartIndex

## ◆ getLights()

const LightList & Ogre::v1::SubEntity::getLights | ( |  | ) | const
| overridevirtual

Gets a list of lights, ordered relative to how close they are to this renderable.

Remarks
  Directional lights, which have no position, will always be first on this list.

Implements Ogre::Renderable.

## ◆ getNumWorldTransforms()

unsigned short Ogre::v1::SubEntity::getNumWorldTransforms | ( |  | ) | const
| overridevirtual

Overridden - see Renderable.

Reimplemented from Ogre::Renderable.

## ◆ getParent()

Entity * Ogre::v1::SubEntity::getParent | ( |  | ) | const
| inline

Accessor to get parent Entity.

References Entity.

## ◆ getRenderOperation()

void Ogre::v1::SubEntity::getRenderOperation | ( | RenderOperation & | op,
|  | bool | casterPass )
| overridevirtual

Overridden - see Renderable.

Implements Ogre::Renderable.

## ◆ getSquaredViewDepth()

Real Ogre::v1::SubEntity::getSquaredViewDepth | ( | const Camera * | cam | ) | const

Overridden, see Renderable.

## ◆ getSubMesh()

SubMesh * Ogre::v1::SubEntity::getSubMesh | ( |  | ) | const

Accessor method to read mesh data.

## ◆ getVertexDataForBinding()

VertexData * Ogre::v1::SubEntity::getVertexDataForBinding | ( | bool | casterPass | ) |

Retrieve the VertexData which should be used for GPU binding.

## ◆ getWorldTransforms()

void Ogre::v1::SubEntity::getWorldTransforms | ( | Matrix4 * | xform | ) | const
| overridevirtual

Overridden - see Renderable.

Implements Ogre::Renderable.

## ◆ resetIndexDataStartEndIndex()

void Ogre::v1::SubEntity::resetIndexDataStartEndIndex | ( |  | ) |

Reset the custom start/end index to the default values.

## ◆ setDatablock() [1/2]

void Ogre::v1::SubEntity::setDatablock | ( | HlmsDatablock * | datablock | ) |
| overridevirtual

Assigns a datablock (i.e. HLMS Material) to this renderable.

Reimplemented from Ogre::Renderable.

## ◆ setDatablock() [2/2]

void Ogre::Renderable::setDatablock | ( | IdString | datablockName | ) |

Make every setDatablock method from Renderable available.

See http://www.research.att.com/~bs/bs_faq2.html#overloadderived

## ◆ setIndexDataEndIndex()

void Ogre::v1::SubEntity::setIndexDataEndIndex | ( | size_t | end_index | ) |

Tells this SubEntity to draw a subset of the SubMesh by adjusting the index buffer extents.

Default value is SubMesh::indexData::indexCount so that the entire index buffer is used when drawing. Valid values are mStartIndex to SubMesh::indexData::indexCount

## ◆ setIndexDataStartIndex()

void Ogre::v1::SubEntity::setIndexDataStartIndex | ( | size_t | start_index | ) |

Tells this SubEntity to draw a subset of the SubMesh by adjusting the index buffer extents.

Default value is zero so that the entire index buffer is used when drawing. Valid values are zero to getIndexDataEndIndex()

## ◆ setMaterial()

void Ogre::v1::SubEntity::setMaterial | ( | const MaterialPtr & | material | ) |
| overridevirtual

Sets a Material to be used.

Remarks
  By default a SubEntity uses the default Material that the SubMesh uses. This call can alter that so that the Material is different for this instance.

Reimplemented from Ogre::Renderable.

References Ogre::Renderable::setDatablock().

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

- OgreSubEntity.h