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