mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-31 21:45:35 +00:00
Merge branch 'fix_reset_animation_48' into 'openmw-48'
Fix resetting player's animation on game loading (#7030) (0.48) See merge request OpenMW/openmw!2449
This commit is contained in:
commit
fedd9191d5
4 changed files with 23 additions and 4 deletions
|
@ -58,7 +58,10 @@ ActorAnimation::ActorAnimation(const MWWorld::Ptr& ptr, osg::ref_ptr<osg::Group>
|
|||
removeEffects();
|
||||
}
|
||||
|
||||
ActorAnimation::~ActorAnimation() = default;
|
||||
ActorAnimation::~ActorAnimation()
|
||||
{
|
||||
removeFromSceneImpl();
|
||||
}
|
||||
|
||||
PartHolderPtr ActorAnimation::attachMesh(const std::string& model, const std::string& bonename, bool enchantedGlow, osg::Vec4f* glowColor)
|
||||
{
|
||||
|
@ -573,9 +576,14 @@ void ActorAnimation::removeHiddenItemLight(const MWWorld::ConstPtr& item)
|
|||
|
||||
void ActorAnimation::removeFromScene()
|
||||
{
|
||||
for (const auto& [k, v] : mItemLights)
|
||||
mInsert->removeChild(v);
|
||||
removeFromSceneImpl();
|
||||
Animation::removeFromScene();
|
||||
}
|
||||
|
||||
void ActorAnimation::removeFromSceneImpl()
|
||||
{
|
||||
for (const auto& [k, v] : mItemLights)
|
||||
mInsert->removeChild(v);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -65,6 +65,7 @@ class ActorAnimation : public Animation, public MWWorld::ContainerStoreListener
|
|||
void addHiddenItemLight(const MWWorld::ConstPtr& item, const ESM::Light* esmLight);
|
||||
void removeHiddenItemLight(const MWWorld::ConstPtr& item);
|
||||
void resetControllers(osg::Node* node);
|
||||
void removeFromSceneImpl();
|
||||
|
||||
typedef std::map<MWWorld::ConstPtr, osg::ref_ptr<SceneUtil::LightSource> > ItemLightMap;
|
||||
ItemLightMap mItemLights;
|
||||
|
|
|
@ -543,7 +543,10 @@ namespace MWRender
|
|||
mLightListCallback = new SceneUtil::LightListCallback;
|
||||
}
|
||||
|
||||
Animation::~Animation() = default;
|
||||
Animation::~Animation()
|
||||
{
|
||||
removeFromSceneImpl();
|
||||
}
|
||||
|
||||
void Animation::setActive(int active)
|
||||
{
|
||||
|
@ -1783,6 +1786,11 @@ namespace MWRender
|
|||
}
|
||||
|
||||
void Animation::removeFromScene()
|
||||
{
|
||||
removeFromSceneImpl();
|
||||
}
|
||||
|
||||
void Animation::removeFromSceneImpl()
|
||||
{
|
||||
if (mGlowLight != nullptr)
|
||||
mInsert->removeChild(mGlowLight);
|
||||
|
|
|
@ -344,6 +344,8 @@ protected:
|
|||
*/
|
||||
virtual void addControllers();
|
||||
|
||||
void removeFromSceneImpl();
|
||||
|
||||
public:
|
||||
|
||||
Animation(const MWWorld::Ptr &ptr, osg::ref_ptr<osg::Group> parentNode, Resource::ResourceSystem* resourceSystem);
|
||||
|
|
Loading…
Reference in a new issue