mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-06 17:15:35 +00:00
Re-enable non-biped creature headtracking (bug #5424)
This commit is contained in:
parent
a68a4338a0
commit
904b245d30
2 changed files with 21 additions and 23 deletions
|
@ -16,6 +16,7 @@
|
|||
Bug #5400: Editor: Verifier checks race of non-skin bodyparts
|
||||
Bug #5415: Environment maps in ebony cuirass and HiRez Armors Indoril cuirass don't work
|
||||
Bug #5416: Junk non-node records before the root node are not handled gracefully
|
||||
Bug #5424: Creatures do not headtrack player
|
||||
Feature #5362: Show the soul gems' trapped soul in count dialog
|
||||
|
||||
0.46.0
|
||||
|
|
|
@ -1815,33 +1815,30 @@ namespace MWRender
|
|||
{
|
||||
mHeadController = nullptr;
|
||||
|
||||
if (mPtr.getClass().isBipedal(mPtr))
|
||||
NodeMap::const_iterator found = getNodeMap().find("bip01 head");
|
||||
if (found == getNodeMap().end())
|
||||
return;
|
||||
|
||||
osg::MatrixTransform* node = found->second;
|
||||
|
||||
bool foundKeyframeCtrl = false;
|
||||
osg::Callback* cb = node->getUpdateCallback();
|
||||
while (cb)
|
||||
{
|
||||
NodeMap::const_iterator found = getNodeMap().find("bip01 head");
|
||||
if (found != getNodeMap().end())
|
||||
if (dynamic_cast<NifOsg::KeyframeController*>(cb))
|
||||
{
|
||||
osg::MatrixTransform* node = found->second;
|
||||
|
||||
bool foundKeyframeCtrl = false;
|
||||
osg::Callback* cb = node->getUpdateCallback();
|
||||
while (cb)
|
||||
{
|
||||
if (dynamic_cast<NifOsg::KeyframeController*>(cb))
|
||||
{
|
||||
foundKeyframeCtrl = true;
|
||||
break;
|
||||
}
|
||||
cb = cb->getNestedCallback();
|
||||
}
|
||||
|
||||
if (foundKeyframeCtrl)
|
||||
{
|
||||
mHeadController = new RotateController(mObjectRoot.get());
|
||||
node->addUpdateCallback(mHeadController);
|
||||
mActiveControllers.emplace_back(node, mHeadController);
|
||||
}
|
||||
foundKeyframeCtrl = true;
|
||||
break;
|
||||
}
|
||||
cb = cb->getNestedCallback();
|
||||
}
|
||||
|
||||
if (!foundKeyframeCtrl)
|
||||
return;
|
||||
|
||||
mHeadController = new RotateController(mObjectRoot.get());
|
||||
node->addUpdateCallback(mHeadController);
|
||||
mActiveControllers.emplace_back(node, mHeadController);
|
||||
}
|
||||
|
||||
void Animation::setHeadPitch(float pitchRadians)
|
||||
|
|
Loading…
Reference in a new issue