From d3c24a6ea404ec9e0b2336ac6ed18558ff8737d6 Mon Sep 17 00:00:00 2001 From: Bret Curtis Date: Thu, 2 Jul 2020 22:01:42 +0200 Subject: [PATCH] Should resolve the original cause of #5509 and prevent mesh from growing while switching back and for from 3rd and 1st person view --- apps/openmw/mwrender/animation.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/apps/openmw/mwrender/animation.cpp b/apps/openmw/mwrender/animation.cpp index aa12d7adb2..688937ce97 100644 --- a/apps/openmw/mwrender/animation.cpp +++ b/apps/openmw/mwrender/animation.cpp @@ -1481,10 +1481,12 @@ namespace MWRender void Animation::setObjectRoot(const std::string &model, bool forceskeleton, bool baseonly, bool isCreature) { osg::ref_ptr previousStateset; - osg::ref_ptr previousCullCallback; if (mObjectRoot) { - previousCullCallback = mObjectRoot->getCullCallback(); + if (mLightListCallback) + mObjectRoot->removeCullCallback(mLightListCallback); + if (mTransparencyUpdater) + mObjectRoot->removeCullCallback(mTransparencyUpdater); previousStateset = mObjectRoot->getStateSet(); mObjectRoot->getParent(0)->removeChild(mObjectRoot); } @@ -1573,9 +1575,11 @@ namespace MWRender removeTriBipVisitor.remove(); } - if (!previousCullCallback) - previousCullCallback = mLightListCallback; - mObjectRoot->setCullCallback(previousCullCallback); + if (!mLightListCallback) + mLightListCallback = new SceneUtil::LightListCallback; + mObjectRoot->addCullCallback(mLightListCallback); + if (mTransparencyUpdater) + mObjectRoot->addCullCallback(mTransparencyUpdater); } osg::Group* Animation::getObjectRoot()