diff --git a/simgear/scene/model/model.cxx b/simgear/scene/model/model.cxx index 1485173f..9ca65c89 100644 --- a/simgear/scene/model/model.cxx +++ b/simgear/scene/model/model.cxx @@ -241,6 +241,10 @@ void MakeEffectVisitor::apply(osg::Group& node) } } SplicingVisitor::apply(node); + // If a new node was created, copy the user data too. + ref_ptr userData = SGSceneUserData::getSceneUserData(&node); + if (userData.valid() && _childStack.back().back().get() != &node) + _childStack.back().back()->setUserData(new SGSceneUserData(*userData)); if (restoreEffect) _currentEffectParent = savedEffectRoot; } @@ -265,6 +269,9 @@ void MakeEffectVisitor::apply(osg::Geode& geode) } else { eg = new EffectGeode; eg->setEffect(effect); + ref_ptr userData = SGSceneUserData::getSceneUserData(&geode); + if (userData.valid()) + eg->setUserData(new SGSceneUserData(*userData)); for (int i = 0; i < geode.getNumDrawables(); ++i) eg->addDrawable(geode.getDrawable(i)); }