OGRE-Next: Ogre::Item Class Reference

| OGRE-Next 3.0.0 Object-Oriented Graphics Rendering Engine

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

Defines an instance of a discrete, movable object based on a Mesh. More...

`#include <OgreItem.h>`

Inheritance diagram for Ogre::Item:
[legend]

## Public Member Functions
| ~Item () override
| Default destructor.
void | _deinitialise ()
| Tear down the internal structures of this Item, rendering it uninitialised.
void | _initialise (bool forceReinitialise=false, bool bUseMeshMat=true)
| Try to initialise the Item from the underlying resources.
void | _notifyParentNodeMemoryChanged () override
const MeshPtr & | getMesh () const
| Gets the Mesh that this Item is based on.
const String & | getMovableType () const override
| Returns the type name of this object.
size_t | getNumSubItems () const
| Retrieves the number of SubItem objects making up this Item.
SubItem * | getSubItem (size_t index)
| Gets a pointer to a SubItem, ie a part of an Item.
const SubItem * | getSubItem (size_t index) const
bool | hasSkeleton () const
| Returns whether or not this Item is skeletally animated.
bool | isInitialised () const
| Returns whether or not this Item is either morph or pose animated.
void | loadingComplete (Resource *res) override
| Resource::Listener hook to notify Entity that a Mesh is (re)loaded.
void | setDatablock (HlmsDatablock *datablock)
| Sets the given HLMS databloock to all SubEntities.
void | setDatablock (IdString datablockName)
| Sets the given HLMS datablock to all SubEntities.
void | setDatablockOrMaterialName (const String &name, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
| Sets the material to use for the whole of this Item.
void | setMaterial (const MaterialPtr &material)
| Sets the material to use for the whole of this Item.
void | setMaterialName (const String &name, const String &groupName=ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME)
| Sets the material to use for the whole of this Item.
void | setSkeletonEnabled (bool bEnable)
| Enables or disables the skeleton on this Item and all of its SubItems.
bool | sharesSkeletonInstance () const
| Returns whether this Item shares it's SkeltonInstance with other Item instances.
void | stopUsingSkeletonInstanceFromMaster ()
| Stops sharing the SkeletonInstance with other Items.
void | useSkeletonInstanceFrom (Item *master)
| Starts using the SkeletonInstance from 'master' instead of using our own.
Public Member Functions inherited from Ogre::MovableObject
| MovableObject (IdType id, ObjectMemoryManager *objectMemoryManager, SceneManager *manager, uint8 renderQueueId)
| Constructor.
| MovableObject (ObjectData *objectDataPtrs)
| Don't use this constructor unless you know what you're doing.
virtual | ~MovableObject ()
| Virtual destructor - read Scott Meyers if you don't know why this is needed.
LightList * | _getLightList ()
| Returns a pointer to the current list of lights for this object.
SceneManager * | _getManager () const
| Get the manager of this object, if any (internal use only)
ObjectData & | _getObjectData ()
| Returns a direct access to the ObjectData state.
const Matrix4 & | _getParentNodeFullTransform () const
| Returns the full transformation of the parent sceneNode or the attachingPoint node.
virtual void | _notifyAttached (Node *parent)
| Internal method called to notify the object that it has been attached to a node.
void | _notifyManager (SceneManager *man)
| Notify the object of it's manager (internal use only)
virtual void | _notifyStaticDirty () const
| Called by SceneManager when it is telling we're a static MovableObject being dirty Don't call this directly.
virtual void | _releaseManualHardwareResources ()
| Notifies the movable object that hardware resources were lost.
virtual void | _restoreManualHardwareResources ()
| Notifies the movable object that hardware resources should be restored.
virtual void | _updateRenderQueue (RenderQueue *queue, Camera *camera, const Camera *lodCamera)
| Internal method by which the movable object must add Renderable subclass instances to the rendering queue.
void | addQueryFlags (uint32 flags)
| As setQueryFlags, except the flags passed as parameters are appended to the existing flags on this object.
void | addVisibilityFlags (uint32 flags)
| As setVisibilityFlags, except the flags passed as parameters are appended to the existing flags on this object.
void | detachFromParent ()
| Detaches an object from a parent SceneNode if attached.
RealAsUint | getCachedDistanceToCamera () const
| Returns the distance to camera as calculated in cullFrustum()
Real | getCachedDistanceToCameraAsReal () const
| Returns the distance to camera as calculated in cullFrustum()
bool | getCastShadows () const
| Returns whether shadow casting is enabled for this object.
unsigned char | getCurrentMeshLod () const
uint32 | getLightMask () const
| Get a bitwise mask which will filter the lights affecting this object.
Listener * | getListener () const
| Gets the current listener for this object.
Aabb | getLocalAabb () const
| Retrieves the local axis-aligned bounding box for this object.
float | getLocalRadius () const
| See getLocalAabb and getWorldRadius.
const String & | getName () const
| Returns the name of this object.
Node * | getParentNode () const
| Returns the node to which this object is attached.
SceneNode * | getParentSceneNode () const
uint32 | getQueryFlags () const
| Returns the query flags relevant for this object.
Real | getRenderingDistance () const
| Gets the distance at which batches are no longer rendered.
Real | getRenderingMinPixelSize () const
| Returns the minimum pixel size an object needs to be in both screen axes in order to be rendered.
uint8 | getRenderQueueGroup () const
| Gets the queue group for this entity, see setRenderQueueGroup for full details.
Real | getShadowRenderingDistance () const
| Gets the distance at which batches are no longer casting shadows.
SkeletonInstance * | getSkeletonInstance () 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.
uint32 | getVisibilityFlags () const
| Returns the visibility flags relevant for this object.
bool | getVisible () const
| Gets this object whether to be visible or not, if it has a renderable component.
Aabb | getWorldAabb () const
| Gets the axis aligned box in world space.
Aabb | getWorldAabbUpdated ()
| Gets the axis aligned box in world space.
float | getWorldRadius () const
| Gets the bounding Radius scaled by max( scale.x, scale.y, scale.z ).
float | getWorldRadiusUpdated ()
| Gets the bounding Radius scaled by max( scale.x, scale.y, scale.z ).
virtual void | instanceBatchCullFrustumThreaded (const Frustum *frustum, const Camera *lodCamera, uint32 combinedVisibilityFlags)
bool | isAttached () const
| Returns true if this object is attached to a Node.
bool | isStatic () const
| Checks whether this MovableObject is static.
bool | isVisible () const
| Returns whether or not this object is supposed to be visible or not.
const LightList & | queryLights () const
| Gets a list of lights, ordered relative to how close they are to this movable object.
void | removeQueryFlags (uint32 flags)
| As setQueryFlags, except the flags passed as parameters are removed from the existing flags on this object.
void | removeVisibilityFlags (uint32 flags)
| As setVisibilityFlags, except the flags passed as parameters are removed from the existing flags on this object.
void | setCastShadows (bool enabled)
| Sets whether or not this object will cast shadows.
void | setLightMask (uint32 lightMask)
| Set a bitwise mask which will filter the lights affecting this object.
void | setListener (Listener *listener)
| Sets a listener for this object.
void | setLocalAabb (const Aabb box)
| Sets the local axis-aligned bounding box for this object.
void | setName (const String &name)
| Sets a custom name for this node.
void | setQueryFlags (uint32 flags)
| Sets the query flags for this object.
void | setRenderingDistance (Real dist)
| Sets the distance at which the object is no longer rendered.
void | setRenderingMinPixelSize (Real pixelSize)
| Sets the minimum pixel size an object needs to be in both screen axes in order to be rendered.
virtual void | setRenderQueueGroup (uint8 queueID)
| Sets the render queue group this entity will be rendered through.
void | setShadowRenderingDistance (Real dist)
| Sets the distance at which the object is no longer casting shadows.
bool | setStatic (bool bStatic)
| Turns this Node into static or dynamic.
void | setVisibilityFlags (uint32 flags)
| Sets the visibility flags for this object.
void | setVisible (bool visible)
| Tells this object whether to be visible or not, if it has a renderable component.
Public Member Functions inherited from Ogre::AnimableObject
| AnimableObject ()
virtual | ~AnimableObject ()
virtual AnimableValuePtr | createAnimableValue (const String &valueName)
| Create a reference-counted AnimableValuePtr for the named value.
const StringVector & | getAnimableValueNames () const
| Gets a list of animable value names for this object.
Public Member Functions inherited from Ogre::IdObject
| IdObject (IdType id)
| We don't call generateNewId() here, to prevent objects in the stack (i.e.
IdType | getId () const
| Get the unique id of this object.
bool | operator() (const IdObject &left, const IdObject &right)
bool | operator() (const IdObject *left, const IdObject *right)
Public Member Functions inherited from Ogre::Resource::Listener
| Listener ()
virtual | ~Listener ()
virtual void | preparingComplete (Resource *)
| Called whenever the resource finishes preparing (paging into memory).
virtual void | unloadingComplete (Resource *)
| Called whenever the resource has been unloaded.

## Additional Inherited Members
Public Types inherited from Ogre::MovableObject
typedef FastArray< MovableObject * > | MovableObjectArray
Static Public Member Functions inherited from Ogre::MovableObject
static void | buildLightList (const size_t numNodes, ObjectData t, const LightListInfo &globalLightList)
static void | calculateCastersBox (const size_t numNodes, ObjectData t, uint32 sceneVisibilityFlags, AxisAlignedBox *outBox)
static void | cullFrustum (const size_t numNodes, ObjectData t, const Camera *frustum, uint32 sceneVisibilityFlags, MovableObjectArray &outCulledObjects, const Camera *lodCamera)
static void | cullLights (const size_t numNodes, ObjectData t, uint32 sceneLightMask, LightListInfo &outGlobalLightList, const FrustumVec &frustums, const FrustumVec &cubemapFrustums)
| See SceneManager::cullLights & see MovableObject::cullFrustum.
static uint32 | getDefaultLightMask ()
| Get the default light mask for all future MovableObject instances.
static uint32 | getDefaultQueryFlags ()
| Get the default query flags for all future MovableObject instances.
static uint32 | getDefaultVisibilityFlags ()
| Get the default visibility flags for all future MovableObject instances.
static void | setDefaultLightMask (uint32 mask)
| Set the default light mask for all future MovableObject instances.
static void | setDefaultQueryFlags (uint32 flags)
| Set the default query flags for all future MovableObject instances.
static void | setDefaultVisibilityFlags (uint32 flags)
| Set the default visibility flags for all future MovableObject instances.
static void | updateAllBounds (const size_t numNodes, ObjectData t)
Public Attributes inherited from Ogre::MovableObject
size_t | mGlobalIndex
| Index in the vector holding this MO reference (could be our parent node, or a global array tracking all movable objecst to avoid memory leaks).
size_t | mParentIndex
| Index in the vector holding this MO reference (could be our parent node, or a global array tracking all movable objecst to avoid memory leaks).
RenderableArray | mRenderables
Static Public Attributes inherited from Ogre::MovableObject
static const FastArray< Real > | c_DefaultLodMesh

## Detailed Description

Defines an instance of a discrete, movable object based on a Mesh.

Remarks
  Ogre generally divides renderable objects into 2 groups, discrete (separate) and relatively small objects which move around the world, and large, sprawling geometry which makes up generally immovable scenery, aka 'level geometry'.

  The Mesh and SubMesh classes deal with the definition of the geometry used by discrete movable objects. Entities are actual instances of objects based on this geometry in the world. Therefore there is usually a single set Mesh for a car, but there may be multiple entities based on it in the world. Entities are able to override aspects of the Mesh it is defined by, such as changing material properties per instance (so you can have many cars using the same geometry but different textures for example). Because a Mesh is split into SubMeshes for this purpose, the Item class is a grouping class (much like the Mesh class) and much of the detail regarding individual changes is kept in the SubItem class. There is a 1:1 relationship between SubItem instances and the SubMesh instances associated with the Mesh the Item is based on.

  Item and SubItem classes are never created directly. Use the createItem method of the SceneManager (passing a model name) to create one.

  Entities are included in the scene by associating them with a SceneNode, using the attachItem method. See the SceneNode class for full information.

Note
  No functions were declared virtual to improve performance.

## Constructor & Destructor Documentation

## ◆ ~Item()

Ogre::Item::~Item | ( |  | ) |
| override

Default destructor.

## Member Function Documentation

## ◆ _deinitialise()

void Ogre::Item::_deinitialise | ( |  | ) |

Tear down the internal structures of this Item, rendering it uninitialised.

## ◆ _initialise()

void Ogre::Item::_initialise | ( | bool | forceReinitialise = false,
|  | bool | bUseMeshMat = true )

Try to initialise the Item from the underlying resources.

Remarks
  This method builds the internal structures of the Item based on it resources (Mesh, Skeleton). This may or may not succeed if the resources it references have been earmarked for background loading, so you should check isInitialised afterwards to see if it was successful.

Parameters

  forceReinitialise | If `true`, this forces the Item to tear down it's internal structures and try to rebuild them. Useful if you changed the content of a Mesh or Skeleton at runtime.

## ◆ _notifyParentNodeMemoryChanged()

void Ogre::Item::_notifyParentNodeMemoryChanged | ( |  | ) |
| overridevirtual

See also
  Node::_callMemoryChangeListeners

Reimplemented from Ogre::MovableObject.

## ◆ getMesh()

const MeshPtr & Ogre::Item::getMesh | ( |  | ) | const

Gets the Mesh that this Item is based on.

## ◆ getMovableType()

const String & Ogre::Item::getMovableType | ( |  | ) | const
| overridevirtual

Returns the type name of this object.

Implements Ogre::MovableObject.

## ◆ getNumSubItems()

size_t Ogre::Item::getNumSubItems | ( |  | ) | const

Retrieves the number of SubItem objects making up this Item.

## ◆ getSubItem() [1/2]

SubItem * Ogre::Item::getSubItem | ( | size_t | index | ) |

Gets a pointer to a SubItem, ie a part of an Item.

References SubItem.

## ◆ getSubItem() [2/2]

const SubItem * Ogre::Item::getSubItem | ( | size_t | index | ) | const

References SubItem.

## ◆ hasSkeleton()

bool Ogre::Item::hasSkeleton | ( |  | ) | const
| inline

Returns whether or not this Item is skeletally animated.

## ◆ isInitialised()

bool Ogre::Item::isInitialised | ( |  | ) | const
| inline

Returns whether or not this Item is either morph or pose animated.

Returns a pointer to the set of entities which share a OldSkeletonInstance. If this instance does not share it's OldSkeletonInstance with other instances `NULL` will be returned Has this Item been initialised yet?

Remarks
  If this returns false, it means this Item hasn't been completely constructed yet from the underlying resources (Mesh, Skeleton), which probably means they were delay-loaded and aren't available yet. This Item won't render until it has been successfully initialised, nor will many of the manipulation methods function.

## ◆ loadingComplete()

void Ogre::Item::loadingComplete | ( | Resource * | res | ) |
| overridevirtual

Resource::Listener hook to notify Entity that a Mesh is (re)loaded.

Reimplemented from Ogre::Resource::Listener.

## ◆ setDatablock() [1/2]

void Ogre::Item::setDatablock | ( | HlmsDatablock * | datablock | ) |

Sets the given HLMS databloock to all SubEntities.

## ◆ setDatablock() [2/2]

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

Sets the given HLMS datablock to all SubEntities.

## ◆ setDatablockOrMaterialName()

void Ogre::Item::setDatablockOrMaterialName | ( | const String & | name,
|  | const String & | groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME )

Sets the material to use for the whole of this Item.

Remarks
  This is a shortcut method to set all the materials for all subentities of this Item. Only use this method is you want to set the same material for all subentities or if you know there is only one. Otherwise call getSubItem() and call the same method on the individual SubItem.

References Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME.

## ◆ setMaterial()

void Ogre::Item::setMaterial | ( | const MaterialPtr & | material | ) |

Sets the material to use for the whole of this Item.

Remarks
  This is a shortcut method to set all the materials for all subentities of this Item. Only use this method is you want to set the same material for all subentities or if you know there is only one. Otherwise call getSubItem() and call the same method on the individual SubItem.

## ◆ setMaterialName()

void Ogre::Item::setMaterialName | ( | const String & | name,
|  | const String & | groupName = ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME )

Sets the material to use for the whole of this Item.

Remarks
  This is a shortcut method to set all the materials for all subentities of this Item. Only use this method is you want to set the same material for all subentities or if you know there is only one. Otherwise call getSubItem() and call the same method on the individual SubItem.

References Ogre::ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME.

## ◆ setSkeletonEnabled()

void Ogre::Item::setSkeletonEnabled | ( | bool | bEnable | ) |

Enables or disables the skeleton on this Item and all of its SubItems.

Remarks
  Does nothing if the Mesh does not have skeletons.

sharesSkeletonInstance() must be false when calling this function

Some meshes only look correct when there is an active skeleton holding all the vertices in place. Hence force-disabling the skeleton may cause the Item to disappear or look wrong. That depends on how the mesh was modelled and rigged.

Force-disabling a skeleton may result in further shader recompiles, but may help a lot with mobile performance.

It's not 100% the same as a Mesh without skeleton, because we still waste VRAM and Bandwidth in VES_BLEND_WEIGHTS & VES_BLEND_INDICES semantics. However the instruction length of the vertex shader is much lower and no CPU cycles are wasted on updating the skeleton.

Parameters

  bEnable | True to re-enable the skeleton on this Item. False to force-disable the skeleton on this Item.

## ◆ sharesSkeletonInstance()

bool Ogre::Item::sharesSkeletonInstance | ( |  | ) | const

Returns whether this Item shares it's SkeltonInstance with other Item instances.

## ◆ stopUsingSkeletonInstanceFromMaster()

void Ogre::Item::stopUsingSkeletonInstanceFromMaster | ( |  | ) |

Stops sharing the SkeletonInstance with other Items.

See also
  useSkeletonInstanceFrom

## ◆ useSkeletonInstanceFrom()

void Ogre::Item::useSkeletonInstanceFrom | ( | Item * | master | ) |

Starts using the SkeletonInstance from 'master' instead of using our own.

Useful when multiple Items can use exactly the same skeleton (e.g. on RPG games the master could be the player's character, then the clothes, and armor the slaves sharing the skeleton instance with its master)

Remarks
  Calling armour->useSkeletonInstanceFrom( player ); armour->useSkeletonInstanceFrom( newPlayer );

is valid and more efficient than calling: armour->useSkeletonInstanceFrom( player ); armour->stopUsingSkeletonInstanceFromMaster(); armour->useSkeletonInstanceFrom( newPlayer );

  Due to the nature of skeleton sharing, all slaves will end up in the position of the master. Therefore it is highly recommended you attach the slaves and master to the same SceneNode, or that you keep all SceneNodes' transforms in sync. Failure to do so could cause Ogre to cull some of those objects because it thinks they're located somewhere else.

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

- OgreItem.h