Scene node capable of displaying an animated mesh and its shadow. More...
#include <IAnimatedMeshSceneNode.h>
Scene node capable of displaying an animated mesh and its shadow.
The shadow is optional: If a shadow should be displayed too, just invoke the IAnimatedMeshSceneNode::createShadowVolumeSceneNode().
Definition at line 53 of file IAnimatedMeshSceneNode.h.
irr::scene::IAnimatedMeshSceneNode::IAnimatedMeshSceneNode | ( | ISceneNode * | parent, |
ISceneManager * | mgr, | ||
s32 | id, | ||
const core::vector3df & | position = core::vector3df(0,0,0) , |
||
const core::vector3df & | rotation = core::vector3df(0,0,0) , |
||
const core::vector3df & | scale = core::vector3df(1.0f, 1.0f, 1.0f) |
||
) | [inline] |
Constructor.
Definition at line 58 of file IAnimatedMeshSceneNode.h.
virtual irr::scene::IAnimatedMeshSceneNode::~IAnimatedMeshSceneNode | ( | ) | [inline, virtual] |
Destructor.
Definition at line 65 of file IAnimatedMeshSceneNode.h.
virtual IShadowVolumeSceneNode* irr::scene::IAnimatedMeshSceneNode::addShadowVolumeSceneNode | ( | const IMesh * | shadowMesh = 0 , |
s32 | id = -1 , |
||
bool | zfailmethod = true , |
||
f32 | infinity = 1000.0f |
||
) | [pure virtual] |
Creates shadow volume scene node as child of this node.
The shadow can be rendered using the ZPass or the zfail method. ZPass is a little bit faster because the shadow volume creation is easier, but with this method there occur ugly looking artifacs when the camera is inside the shadow volume. These error do not occur with the ZFail method.
shadowMesh,: | Optional custom mesh for shadow volume. |
id,: | Id of the shadow scene node. This id can be used to identify the node later. |
zfailmethod,: | If set to true, the shadow will use the zfail method, if not, zpass is used. |
infinity,: | Value used by the shadow volume algorithm to scale the shadow volume (for zfail shadow volume we support only finite shadows, so camera zfar must be larger than shadow back cap, which is depend on infinity parameter). |
virtual void irr::scene::IAnimatedMeshSceneNode::animateJoints | ( | bool | CalculateAbsolutePositions = true | ) | [pure virtual] |
animates the joints in the mesh based on the current frame.
Also takes in to account transitions.
virtual ISceneNode* irr::scene::IAnimatedMeshSceneNode::clone | ( | ISceneNode * | newParent = 0 , |
ISceneManager * | newManager = 0 |
||
) | [pure virtual] |
Creates a clone of this scene node and its children.
newParent | An optional new parent. |
newManager | An optional new scene manager. |
Reimplemented from irr::scene::ISceneNode.
virtual f32 irr::scene::IAnimatedMeshSceneNode::getAnimationSpeed | ( | ) | const [pure virtual] |
Gets the speed with which the animation is played.
virtual s32 irr::scene::IAnimatedMeshSceneNode::getEndFrame | ( | ) | const [pure virtual] |
Returns the current end frame number.
virtual f32 irr::scene::IAnimatedMeshSceneNode::getFrameNr | ( | ) | const [pure virtual] |
Returns the currently displayed frame number.
virtual u32 irr::scene::IAnimatedMeshSceneNode::getJointCount | ( | ) | const [pure virtual] |
Gets joint count.
virtual IBoneSceneNode* irr::scene::IAnimatedMeshSceneNode::getJointNode | ( | const c8 * | jointName | ) | [pure virtual] |
Get a pointer to a joint in the mesh (if the mesh is a bone based mesh).
With this method it is possible to attach scene nodes to joints for example possible to attach a weapon to the left hand of an animated model. This example shows how:
ISceneNode* hand = yourAnimatedMeshSceneNode->getJointNode("LeftHand"); hand->addChild(weaponSceneNode);
Please note that the joint returned by this method may not exist before this call and the joints in the node were created by it.
jointName,: | Name of the joint. |
virtual IBoneSceneNode* irr::scene::IAnimatedMeshSceneNode::getJointNode | ( | u32 | jointID | ) | [pure virtual] |
same as getJointNode(const c8* jointName), but based on id
virtual bool irr::scene::IAnimatedMeshSceneNode::getLoopMode | ( | ) | const [pure virtual] |
returns the current loop mode
When true the animations are played looped
virtual const SMD3QuaternionTag* irr::scene::IAnimatedMeshSceneNode::getMD3TagTransformation | ( | const core::stringc & | tagname | ) | [pure virtual] |
Get the absolute transformation for a special MD3 Tag if the mesh is a md3 mesh, or the absolutetransformation if it's a normal scenenode.
virtual IAnimatedMesh* irr::scene::IAnimatedMeshSceneNode::getMesh | ( | void | ) | [pure virtual] |
Returns the current mesh.
virtual s32 irr::scene::IAnimatedMeshSceneNode::getStartFrame | ( | ) | const [pure virtual] |
Returns the current start frame number.
virtual bool irr::scene::IAnimatedMeshSceneNode::isReadOnlyMaterials | ( | ) | const [pure virtual] |
Returns if the scene node should not copy the materials of the mesh but use them in a read only style.
virtual void irr::scene::IAnimatedMeshSceneNode::setAnimationEndCallback | ( | IAnimationEndCallBack * | callback = 0 | ) | [pure virtual] |
Sets a callback interface which will be called if an animation playback has ended.
Set this to 0 to disable the callback again. Please note that this will only be called when in non looped mode, see IAnimatedMeshSceneNode::setLoopMode().
virtual void irr::scene::IAnimatedMeshSceneNode::setAnimationSpeed | ( | f32 | framesPerSecond | ) | [pure virtual] |
Sets the speed with which the animation is played.
framesPerSecond,: | Frames per second played. |
virtual void irr::scene::IAnimatedMeshSceneNode::setCurrentFrame | ( | f32 | frame | ) | [pure virtual] |
Sets the current frame number.
From now on the animation is played from this frame.
frame,: | Number of the frame to let the animation be started from. The frame number must be a valid frame number of the IMesh used by this scene node. Set IAnimatedMesh::getMesh() for details. |
Sets the frame numbers between the animation is looped.
The default is 0 - MaximalFrameCount of the mesh.
begin,: | Start frame number of the loop. |
end,: | End frame number of the loop. |
virtual void irr::scene::IAnimatedMeshSceneNode::setJointMode | ( | E_JOINT_UPDATE_ON_RENDER | mode | ) | [pure virtual] |
Set how the joints should be updated on render.
virtual void irr::scene::IAnimatedMeshSceneNode::setLoopMode | ( | bool | playAnimationLooped | ) | [pure virtual] |
Sets looping mode which is on by default.
If set to false, animations will not be played looped.
virtual bool irr::scene::IAnimatedMeshSceneNode::setMD2Animation | ( | EMD2_ANIMATION_TYPE | anim | ) | [pure virtual] |
Starts a default MD2 animation.
With this method it is easily possible to start a Run, Attack, Die or whatever animation, if the mesh contained in this scene node is an md2 mesh. Otherwise, nothing happens.
anim,: | An MD2 animation type, which should be played, for example EMAT_STAND for the standing animation. |
virtual bool irr::scene::IAnimatedMeshSceneNode::setMD2Animation | ( | const c8 * | animationName | ) | [pure virtual] |
Starts a special MD2 animation.
With this method it is easily possible to start a Run, Attack, Die or whatever animation, if the mesh contained in this scene node is an md2 mesh. Otherwise, nothing happens. This method uses a character string to identify the animation. If the animation is a standard md2 animation, you might want to start this animation with the EMD2_ANIMATION_TYPE enumeration instead.
animationName,: | Name of the animation which should be played. |
virtual void irr::scene::IAnimatedMeshSceneNode::setMesh | ( | IAnimatedMesh * | mesh | ) | [pure virtual] |
Sets a new mesh.
virtual void irr::scene::IAnimatedMeshSceneNode::setReadOnlyMaterials | ( | bool | readonly | ) | [pure virtual] |
Sets if the scene node should not copy the materials of the mesh but use them in a read only style.
In this way it is possible to change the materials a mesh causing all mesh scene nodes referencing this mesh to change too.
virtual void irr::scene::IAnimatedMeshSceneNode::setRenderFromIdentity | ( | bool | On | ) | [pure virtual] |
render mesh ignoring its transformation.
Culling is unaffected.
virtual void irr::scene::IAnimatedMeshSceneNode::setTransitionTime | ( | f32 | Time | ) | [pure virtual] |
Sets the transition time in seconds.
Note: This needs to enable joints, and setJointmode set to EJUOR_CONTROL. You must call animateJoints(), or the mesh will not animate.