diff options
author | cutealien <cutealien@dfc29bdd-3216-0410-991c-e03cc46cb475> | 2020-01-03 19:05:16 +0000 |
---|---|---|
committer | cutealien <cutealien@dfc29bdd-3216-0410-991c-e03cc46cb475> | 2020-01-03 19:05:16 +0000 |
commit | 2ae2a551a6290f46734307bbfdafea4b1a2cf2ba (patch) | |
tree | ba2f0b468640e44899fed3df2d4cc58795f4a003 /include/IBoneSceneNode.h | |
download | irrlicht-2ae2a551a6290f46734307bbfdafea4b1a2cf2ba.tar.xz |
Merging r5975 through r6036 from trunk to ogl-es branch.
GLES drivers adapted, but only did make compile-tests.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/branches/ogl-es@6038 dfc29bdd-3216-0410-991c-e03cc46cb475
Diffstat (limited to 'include/IBoneSceneNode.h')
-rw-r--r-- | include/IBoneSceneNode.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/include/IBoneSceneNode.h b/include/IBoneSceneNode.h new file mode 100644 index 0000000..4032bb0 --- /dev/null +++ b/include/IBoneSceneNode.h @@ -0,0 +1,108 @@ +// Copyright (C) 2002-2012 Nikolaus Gebhardt
+// This file is part of the "Irrlicht Engine".
+// For conditions of distribution and use, see copyright notice in irrlicht.h
+
+#ifndef __I_BONE_SCENE_NODE_H_INCLUDED__
+#define __I_BONE_SCENE_NODE_H_INCLUDED__
+
+#include "ISceneNode.h"
+
+namespace irr
+{
+namespace scene
+{
+
+ //! Enumeration for different bone animation modes
+ enum E_BONE_ANIMATION_MODE
+ {
+ //! The bone is usually animated, unless it's parent is not animated
+ EBAM_AUTOMATIC=0,
+
+ //! The bone is animated by the skin, if it's parent is not animated then animation will resume from this bone onward
+ EBAM_ANIMATED,
+
+ //! The bone is not animated by the skin
+ EBAM_UNANIMATED,
+
+ //! Not an animation mode, just here to count the available modes
+ EBAM_COUNT
+
+ };
+
+ enum E_BONE_SKINNING_SPACE
+ {
+ //! local skinning, standard
+ EBSS_LOCAL=0,
+
+ //! global skinning
+ EBSS_GLOBAL,
+
+ EBSS_COUNT
+ };
+
+ //! Names for bone animation modes
+ const c8* const BoneAnimationModeNames[] =
+ {
+ "automatic",
+ "animated",
+ "unanimated",
+ 0,
+ };
+
+
+ //! Interface for bones used for skeletal animation.
+ /** Used with ISkinnedMesh and IAnimatedMeshSceneNode. */
+ class IBoneSceneNode : public ISceneNode
+ {
+ public:
+
+ IBoneSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id=-1) :
+ ISceneNode(parent, mgr, id),positionHint(-1),scaleHint(-1),rotationHint(-1) { }
+
+ //! Get the name of the bone
+ /** \deprecated Use getName instead. This method may be removed by Irrlicht 1.9 */
+ _IRR_DEPRECATED_ virtual const c8* getBoneName() const { return getName(); }
+
+ //! Get the index of the bone
+ virtual u32 getBoneIndex() const = 0;
+
+ //! Sets the animation mode of the bone.
+ /** \return True if successful. (Unused) */
+ virtual bool setAnimationMode(E_BONE_ANIMATION_MODE mode) = 0;
+
+ //! Gets the current animation mode of the bone
+ virtual E_BONE_ANIMATION_MODE getAnimationMode() const = 0;
+
+ //! Get the axis aligned bounding box of this node
+ virtual const core::aabbox3d<f32>& getBoundingBox() const = 0;
+
+ //! Returns the relative transformation of the scene node.
+ //virtual core::matrix4 getRelativeTransformation() const = 0;
+
+ //! The animation method.
+ virtual void OnAnimate(u32 timeMs) =0;
+
+ //! The render method.
+ /** Does nothing as bones are not visible. */
+ virtual void render() _IRR_OVERRIDE_ { }
+
+ //! How the relative transformation of the bone is used
+ virtual void setSkinningSpace( E_BONE_SKINNING_SPACE space ) =0;
+
+ //! How the relative transformation of the bone is used
+ virtual E_BONE_SKINNING_SPACE getSkinningSpace() const =0;
+
+ //! Updates the absolute position based on the relative and the parents position
+ virtual void updateAbsolutePositionOfAllChildren()=0;
+
+ s32 positionHint;
+ s32 scaleHint;
+ s32 rotationHint;
+ };
+
+
+} // end namespace scene
+} // end namespace irr
+
+#endif
+
|