]> git.mxchange.org Git - flightgear.git/commitdiff
Fix for #1244 (Canvas placements with pick animation).
authorThomas Geymayer <tomgey@gmail.com>
Wed, 23 Oct 2013 23:30:01 +0000 (01:30 +0200)
committerThomas Geymayer <tomgey@gmail.com>
Wed, 23 Oct 2013 23:30:54 +0000 (01:30 +0200)
src/Cockpit/od_gauge.cxx

index f2343a0aa5a8d90e363fd592b6e311694ba29bb6..5cae2fb8e1cb13d53b412c419173d3855d6c77c6 100644 (file)
@@ -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();
+    }
 };
 
 //------------------------------------------------------------------------------