Go to the documentation of this file.00001
00002
00003
00004
00005 #ifndef __I_BONE_SCENE_NODE_H_INCLUDED__
00006 #define __I_BONE_SCENE_NODE_H_INCLUDED__
00007
00008 #include "ISceneNode.h"
00009
00010 namespace irr
00011 {
00012 namespace scene
00013 {
00014
00016 enum E_BONE_ANIMATION_MODE
00017 {
00019 EBAM_AUTOMATIC=0,
00020
00022 EBAM_ANIMATED,
00023
00025 EBAM_UNANIMATED,
00026
00028 EBAM_COUNT
00029
00030 };
00031
00032 enum E_BONE_SKINNING_SPACE
00033 {
00035 EBSS_LOCAL=0,
00036
00038 EBSS_GLOBAL,
00039
00040 EBSS_COUNT
00041 };
00042
00044 const c8* const BoneAnimationModeNames[] =
00045 {
00046 "automatic",
00047 "animated",
00048 "unanimated",
00049 0,
00050 };
00051
00052
00054
00055 class IBoneSceneNode : public ISceneNode
00056 {
00057 public:
00058
00059 IBoneSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id=-1) :
00060 ISceneNode(parent, mgr, id),positionHint(-1),scaleHint(-1),rotationHint(-1) { }
00061
00063
00064 _IRR_DEPRECATED_ virtual const c8* getBoneName() const { return getName(); }
00065
00067 virtual u32 getBoneIndex() const = 0;
00068
00070
00071 virtual bool setAnimationMode(E_BONE_ANIMATION_MODE mode) = 0;
00072
00074 virtual E_BONE_ANIMATION_MODE getAnimationMode() const = 0;
00075
00077 virtual const core::aabbox3d<f32>& getBoundingBox() const = 0;
00078
00080
00081
00083 virtual void OnAnimate(u32 timeMs) =0;
00084
00086
00087 virtual void render() { }
00088
00090 virtual void setSkinningSpace( E_BONE_SKINNING_SPACE space ) =0;
00091
00093 virtual E_BONE_SKINNING_SPACE getSkinningSpace() const =0;
00094
00096 virtual void updateAbsolutePositionOfAllChildren()=0;
00097
00098 s32 positionHint;
00099 s32 scaleHint;
00100 s32 rotationHint;
00101 };
00102
00103
00104 }
00105 }
00106
00107 #endif
00108