1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-02 04:15:34 +00:00

Revert "Revert "Use a child scene node for the accumulation root""

This reverts commit 376dfed15b.

I was wrong. It's needed at least for NPCs since they're attaching multiple
animated skeletons to an object, and they all need to be offset correctly.

Would be nice to use a Node, Bone, or TagPoint instead of a hefty SceneNode,
though.
This commit is contained in:
Chris Robinson 2013-02-02 05:43:37 -08:00
parent e6e7c69013
commit fc7590694d
2 changed files with 3 additions and 4 deletions

View file

@ -48,7 +48,7 @@ Animation::~Animation()
void Animation::createEntityList(Ogre::SceneNode *node, const std::string &model) void Animation::createEntityList(Ogre::SceneNode *node, const std::string &model)
{ {
mInsert = node; mInsert = node->createChildSceneNode();
assert(mInsert); assert(mInsert);
mEntityList = NifOgre::Loader::createEntities(mInsert, model); mEntityList = NifOgre::Loader::createEntities(mInsert, model);
@ -76,8 +76,7 @@ void Animation::createEntityList(Ogre::SceneNode *node, const std::string &model
if(data.isEmpty() || !Ogre::any_cast<bool>(data)) if(data.isEmpty() || !Ogre::any_cast<bool>(data))
continue; continue;
mAccumRoot = skelinst->getRootBone(); mAccumRoot = mInsert;
mAccumRoot->setManuallyControlled(true);
mNonAccumRoot = skelinst->getBone(bone->getHandle()); mNonAccumRoot = skelinst->getBone(bone->getHandle());
mStartPosition = mNonAccumRoot->getInitialPosition(); mStartPosition = mNonAccumRoot->getInitialPosition();

View file

@ -22,7 +22,7 @@ protected:
Ogre::SceneNode* mInsert; Ogre::SceneNode* mInsert;
NifOgre::EntityList mEntityList; NifOgre::EntityList mEntityList;
std::map<std::string,NifOgre::TextKeyMap> mTextKeys; std::map<std::string,NifOgre::TextKeyMap> mTextKeys;
Ogre::Bone *mAccumRoot; Ogre::Node *mAccumRoot;
Ogre::Bone *mNonAccumRoot; Ogre::Bone *mNonAccumRoot;
Ogre::Vector3 mAccumulate; Ogre::Vector3 mAccumulate;
Ogre::Vector3 mStartPosition; Ogre::Vector3 mStartPosition;