1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-22 13:39:40 +00:00

Fix setting and getting KeyframeController transforms

This commit is contained in:
Chris Robinson 2013-04-24 04:12:27 -07:00
parent 102b3bdef9
commit 68a9a4de5f

View file

@ -173,8 +173,6 @@ public:
{ {
if(time <= keys.front().mTime) if(time <= keys.front().mTime)
return keys.front().mValue; return keys.front().mValue;
if(time >= keys.back().mTime)
return keys.back().mValue;
Nif::FloatKeyList::VecType::const_iterator iter(keys.begin()+1); Nif::FloatKeyList::VecType::const_iterator iter(keys.begin()+1);
for(;iter != keys.end();iter++) for(;iter != keys.end();iter++)
@ -193,8 +191,6 @@ public:
{ {
if(time <= keys.front().mTime) if(time <= keys.front().mTime)
return keys.front().mValue; return keys.front().mValue;
if(time >= keys.back().mTime)
return keys.back().mValue;
Nif::Vector3KeyList::VecType::const_iterator iter(keys.begin()+1); Nif::Vector3KeyList::VecType::const_iterator iter(keys.begin()+1);
for(;iter != keys.end();iter++) for(;iter != keys.end();iter++)
@ -213,8 +209,6 @@ public:
{ {
if(time <= keys.front().mTime) if(time <= keys.front().mTime)
return keys.front().mValue; return keys.front().mValue;
if(time >= keys.back().mTime)
return keys.back().mValue;
Nif::QuaternionKeyList::VecType::const_iterator iter(keys.begin()+1); Nif::QuaternionKeyList::VecType::const_iterator iter(keys.begin()+1);
for(;iter != keys.end();iter++) for(;iter != keys.end();iter++)
@ -241,21 +235,21 @@ public:
{ {
if(mRotations.mKeys.size() > 0) if(mRotations.mKeys.size() > 0)
return interpKey(mRotations.mKeys, time); return interpKey(mRotations.mKeys, time);
return Ogre::Quaternion(); return mNode->getOrientation();
} }
virtual Ogre::Vector3 getTranslation(float time) const virtual Ogre::Vector3 getTranslation(float time) const
{ {
if(mTranslations.mKeys.size() > 0) if(mTranslations.mKeys.size() > 0)
return interpKey(mTranslations.mKeys, time); return interpKey(mTranslations.mKeys, time);
return Ogre::Vector3(0.0f); return mNode->getPosition();
} }
virtual Ogre::Vector3 getScale(float time) const virtual Ogre::Vector3 getScale(float time) const
{ {
if(mScales.mKeys.size() > 0) if(mScales.mKeys.size() > 0)
return Ogre::Vector3(interpKey(mScales.mKeys, time)); return Ogre::Vector3(interpKey(mScales.mKeys, time));
return Ogre::Vector3(1.0f); return mNode->getScale();
} }
virtual Ogre::Real getValue() const virtual Ogre::Real getValue() const
@ -266,9 +260,12 @@ public:
virtual void setValue(Ogre::Real time) virtual void setValue(Ogre::Real time)
{ {
mNode->setOrientation(Value::getRotation(time)); if(mRotations.mKeys.size() > 0)
mNode->setPosition(Value::getTranslation(time)); mNode->setOrientation(interpKey(mRotations.mKeys, time));
mNode->setScale(Value::getScale(time)); if(mTranslations.mKeys.size() > 0)
mNode->setPosition(interpKey(mTranslations.mKeys, time));
if(mScales.mKeys.size() > 0)
mNode->setScale(Ogre::Vector3(interpKey(mScales.mKeys, time)));
} }
}; };