Irrlicht 3D Engine
IAnimatedMeshSceneNode.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
2 // This file is part of the "Irrlicht Engine".
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
4 
5 #ifndef __I_ANIMATED_MESH_SCENE_NODE_H_INCLUDED__
6 #define __I_ANIMATED_MESH_SCENE_NODE_H_INCLUDED__
7 
8 #include "ISceneNode.h"
9 #include "IBoneSceneNode.h"
10 #include "IAnimatedMeshMD2.h"
11 #include "IAnimatedMeshMD3.h"
12 
13 namespace irr
14 {
15 namespace scene
16 {
17  class IShadowVolumeSceneNode;
18 
20  {
23 
26 
29  };
30 
31 
32  class IAnimatedMeshSceneNode;
33 
35 
40  {
41  public:
42 
44 
47  virtual void OnAnimationEnd(IAnimatedMeshSceneNode* node) = 0;
48  };
49 
51 
54  {
55  public:
56 
59  const core::vector3df& position = core::vector3df(0,0,0),
60  const core::vector3df& rotation = core::vector3df(0,0,0),
61  const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f))
62  : ISceneNode(parent, mgr, id, position, rotation, scale) {}
63 
66 
68 
72  virtual void setCurrentFrame(f32 frame) = 0;
73 
75 
79  virtual bool setFrameLoop(s32 begin, s32 end) = 0;
80 
82 
83  virtual void setAnimationSpeed(f32 framesPerSecond) = 0;
84 
86 
87  virtual f32 getAnimationSpeed() const =0;
88 
90 
108  s32 id=-1, bool zfailmethod=true, f32 infinity=1000.0f) = 0;
109 
110 
112 
126  virtual IBoneSceneNode* getJointNode(const c8* jointName)=0;
127 
129  virtual IBoneSceneNode* getJointNode(u32 jointID) = 0;
130 
132 
133  virtual u32 getJointCount() const = 0;
134 
136 
143  virtual bool setMD2Animation(EMD2_ANIMATION_TYPE anim) = 0;
144 
146 
158  virtual bool setMD2Animation(const c8* animationName) = 0;
159 
161  virtual f32 getFrameNr() const = 0;
163  virtual s32 getStartFrame() const = 0;
165  virtual s32 getEndFrame() const = 0;
166 
168 
169  virtual void setLoopMode(bool playAnimationLooped) = 0;
170 
172 
173  virtual bool getLoopMode() const = 0;
174 
176 
179  virtual void setAnimationEndCallback(IAnimationEndCallBack* callback=0) = 0;
180 
182 
185  virtual void setReadOnlyMaterials(bool readonly) = 0;
186 
188  virtual bool isReadOnlyMaterials() const = 0;
189 
191  virtual void setMesh(IAnimatedMesh* mesh) = 0;
192 
194  virtual IAnimatedMesh* getMesh(void) = 0;
195 
197  virtual const SMD3QuaternionTag* getMD3TagTransformation( const core::stringc & tagname) = 0;
198 
201 
203 
206  virtual void setTransitionTime(f32 Time) =0;
207 
209 
210  virtual void animateJoints(bool CalculateAbsolutePositions=true) = 0;
211 
213 
214  virtual void setRenderFromIdentity( bool On )=0;
215 
217 
220  virtual ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0) = 0;
221 
222  };
223 
224 } // end namespace scene
225 } // end namespace irr
226 
227 #endif
228 
Base class of most objects of the Irrlicht Engine.
3d vector template class with lots of operators and methods.
Definition: vector3d.h:23
Interface for an animated mesh.
Definition: IAnimatedMesh.h:63
Scene node capable of displaying an animated mesh and its shadow.
virtual s32 getStartFrame() const =0
Returns the current start frame number.
virtual u32 getJointCount() const =0
Gets joint count.
virtual f32 getAnimationSpeed() const =0
Gets the speed with which the animation is played.
virtual bool getLoopMode() const =0
returns the current loop mode
virtual void setTransitionTime(f32 Time)=0
Sets the transition time in seconds.
virtual ISceneNode * clone(ISceneNode *newParent=0, ISceneManager *newManager=0)=0
Creates a clone of this scene node and its children.
virtual void setJointMode(E_JOINT_UPDATE_ON_RENDER mode)=0
Set how the joints should be updated on render.
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))
Constructor.
virtual void animateJoints(bool CalculateAbsolutePositions=true)=0
animates the joints in the mesh based on the current frame.
virtual IBoneSceneNode * getJointNode(u32 jointID)=0
same as getJointNode(const c8* jointName), but based on id
virtual bool setMD2Animation(const c8 *animationName)=0
Starts a special MD2 animation.
virtual bool isReadOnlyMaterials() const =0
Returns if the scene node should not copy the materials of the mesh but use them in a read only style...
virtual void setAnimationSpeed(f32 framesPerSecond)=0
Sets the speed with which the animation is played.
virtual s32 getEndFrame() const =0
Returns the current end frame number.
virtual bool setFrameLoop(s32 begin, s32 end)=0
Sets the frame numbers between the animation is looped.
virtual void setRenderFromIdentity(bool On)=0
render mesh ignoring its transformation.
virtual IShadowVolumeSceneNode * addShadowVolumeSceneNode(const IMesh *shadowMesh=0, s32 id=-1, bool zfailmethod=true, f32 infinity=1000.0f)=0
Creates shadow volume scene node as child of this node.
virtual const SMD3QuaternionTag * getMD3TagTransformation(const core::stringc &tagname)=0
Get the absolute transformation for a special MD3 Tag if the mesh is a md3 mesh, or the absolutetrans...
virtual f32 getFrameNr() const =0
Returns the currently displayed frame number.
virtual IBoneSceneNode * getJointNode(const c8 *jointName)=0
Get a pointer to a joint in the mesh (if the mesh is a bone based mesh).
virtual bool setMD2Animation(EMD2_ANIMATION_TYPE anim)=0
Starts a default MD2 animation.
virtual IAnimatedMesh * getMesh(void)=0
Returns the current mesh.
virtual void setAnimationEndCallback(IAnimationEndCallBack *callback=0)=0
Sets a callback interface which will be called if an animation playback has ended.
virtual void setLoopMode(bool playAnimationLooped)=0
Sets looping mode which is on by default.
virtual void setReadOnlyMaterials(bool readonly)=0
Sets if the scene node should not copy the materials of the mesh but use them in a read only style.
virtual void setMesh(IAnimatedMesh *mesh)=0
Sets a new mesh.
virtual void setCurrentFrame(f32 frame)=0
Sets the current frame number.
Callback interface for catching events of ended animations.
virtual void OnAnimationEnd(IAnimatedMeshSceneNode *node)=0
Will be called when the animation playback has ended.
Interface for bones used for skeletal animation.
Class which holds the geometry of an object.
Definition: IMesh.h:24
The Scene Manager manages scene nodes, mesh recources, cameras and all the other stuff.
Scene node interface.
Definition: ISceneNode.h:41
Scene node for rendering a shadow volume into a stencil buffer.
EMD2_ANIMATION_TYPE
Types of standard md2 animations.
@ EJUOR_NONE
do nothing
@ EJUOR_READ
get joints positions from the mesh (for attached nodes, etc)
@ EJUOR_CONTROL
control joint positions in the mesh (eg. ragdolls, or set the animation from animateJoints() )
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:13
float f32
32 bit floating point variable.
Definition: irrTypes.h:104
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
char c8
8 bit character variable.
Definition: irrTypes.h:31
signed int s32
32 bit signed variable.
Definition: irrTypes.h:66
hold a tag info for connecting meshes