00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00034 #include "../SO3Animation/SO3SkeletonAnimation.h"
00035 #include "../SO3Animation/SO3SkeletonAnimationTrack.h"
00036 #include "../SO3SceneGraph/SO3Skeleton.h"
00037 #include "../SO3SceneGraph/SO3Entity.h"
00038
00039 namespace SO3
00040 {
00041
00042 SSkeletonAnimation::SSkeletonAnimation(SScene* scene, std::string animationName, SSkeleton* skeleton, unsigned short id) : SAnim(scene, animationName, skeleton, id, SAnim::SO3_SKELETAL_ANIM)
00043 {
00044 ogreAnimation = skeleton->GetOgreSkeletonPointer()->getAnimation(id);
00045 mOgreEntity = skeleton->GetParentEntity()->getOgreEntityPointer();
00046
00047 int i=0;
00048 Ogre::Animation::NodeTrackIterator iOgreNodesTracks = ogreAnimation->getNodeTrackIterator();
00049 while(iOgreNodesTracks.hasMoreElements())
00050 {
00051 Ogre::NodeAnimationTrack* ogreNodeTrack = iOgreNodesTracks.getNext();
00052 std::string animationTrackName = animationName+".skeletonTrack_"+boost::lexical_cast<std::string>(ogreNodeTrack->getHandle());
00053 SAnimTrack* animationTrack = new SSkeletonAnimationTrack(animationTrackName, this, ogreNodeTrack->getHandle());
00054 AddAnimationTrack(animationTrack);
00055 i++;
00056 }
00057 }
00058
00059 SSkeletonAnimation::SSkeletonAnimation() : SAnim(0, "", 0, 0, SO3_UNKNOWN_ANIM)
00060 {
00061
00062 }
00063
00064 SSkeletonAnimation::~SSkeletonAnimation()
00065 {
00066 }
00067
00068 Ogre::AnimationState* SSkeletonAnimation::_GetOgreAnimationState()
00069 {
00070 return mOgreEntity->getAnimationState(name);
00071 }
00072
00073 }