From: Thomas Geymayer Date: Wed, 23 Oct 2013 23:30:01 +0000 (+0200) Subject: Fix for #1244 (Canvas placements with pick animation). X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=c4f02cc41e7ddc08a9872f1c2f0f655662229f54;p=flightgear.git Fix for #1244 (Canvas placements with pick animation). --- diff --git a/src/Cockpit/od_gauge.cxx b/src/Cockpit/od_gauge.cxx index f2343a0aa..5cae2fb8e 100644 --- a/src/Cockpit/od_gauge.cxx +++ b/src/Cockpit/od_gauge.cxx @@ -138,7 +138,7 @@ class ReplaceStaticTextureVisitor: return; osg::Group *parent = node.getParent(0); - if( !_node_name.empty() && parent->getName() != _node_name ) + if( !_node_name.empty() && getNodeName(*parent) != _node_name ) return; if( !_parent_name.empty() ) @@ -233,6 +233,21 @@ class ReplaceStaticTextureVisitor: simgear::canvas::CanvasWeakPtr _canvas; simgear::canvas::Placements _placements; + + const std::string& getNodeName(const osg::Node& node) const + { + if( !node.getName().empty() ) + return node.getName(); + + // Special handling for pick animation which clears the name of the object + // and instead sets the name of a parent group with one or two groups + // attached (one for normal rendering and one for the picking highlight). + osg::Group const* parent = node.getParent(0); + if( parent->getName() == "pick render group" ) + return parent->getParent(0)->getName(); + + return node.getName(); + } }; //------------------------------------------------------------------------------