void CMonster3D::setupSkeleton(std::string skeletonFile) { Ogre::SkeletonPtr pSkeletonBody = Ogre::SkeletonManager::getSingleton().getByName(m_meshName + ".skeleton"); Ogre::Skeleton::BoneHandleMap boneHandleMap; Ogre::SkeletonPtr pNewSkeleton = Ogre::SkeletonManager::getSingleton().load(skeletonFile, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); Ogre::Animation *pSrcAnimation = pNewSkeleton->getAnimation(0); std::string newAnimationName = pSrcAnimation->getName() + "::" + m_pMonsterNode->getName(); Ogre::Animation *pNewAnimation = pNewSkeleton->createAnimation(newAnimationName, pSrcAnimation->getLength()); Ogre::Animation *pCloneAnimation = pNewSkeleton->getAnimation(0)->clone(newAnimationName); *pNewAnimation = *pCloneAnimation; pNewSkeleton->removeAnimation(pSrcAnimation->getName()); pNewSkeleton->_buildMapBoneByHandle(pNewSkeleton.getPointer(), boneHandleMap); pSkeletonBody->_mergeSkeletonAnimations(pNewSkeleton.getPointer(), boneHandleMap); Ogre::SkeletonManager::getSingleton().remove(skeletonFile); m_pBodyEntity->getSkeleton()->_refreshAnimationState(m_pBodyEntity->getAllAnimationStates()); }
void Barrel::loadAnimation() { Ogre::SkeletonPtr skeleton = Ogre::SkeletonManager::getSingleton().load("jaiqua.skeleton", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME); animation = skeleton->getAnimation("Sneak"); }