]> git.mxchange.org Git - flightgear.git/commitdiff
Draw Canvas GUI on top of PUI (to conform with event order).
authorThomas Geymayer <tomgey@gmail.com>
Tue, 24 Jun 2014 07:14:57 +0000 (09:14 +0200)
committerThomas Geymayer <tomgey@gmail.com>
Tue, 24 Jun 2014 09:57:33 +0000 (11:57 +0200)
src/Viewer/CameraGroup.cxx
src/Viewer/renderer.cxx

index 1600ee564921688c928c3dccb3d192f962780736..53bd515171946843d08a5c6f06900c4c4ad94c9e 100644 (file)
@@ -1085,6 +1085,12 @@ CameraInfo* CameraGroup::buildGUICamera(SGPropertyNode* cameraNode,
     // The camera group will always update the camera
     camera->setReferenceFrame(Transform::ABSOLUTE_RF);
 
+    // Draw all nodes in the order they are added to the GUI camera
+    camera->getOrCreateStateSet()
+          ->setRenderBinDetails( 0,
+                                 "PreOrderBin",
+                                 osg::StateSet::OVERRIDE_RENDERBIN_DETAILS );
+
     getViewer()->addSlave(camera, Matrixd::identity(), Matrixd::identity(), false);
     //installCullVisitor(camera);
     int slaveIndex = getViewer()->getNumSlaves() - 1;
index 9728f0f72ac0757c255a8d6ac75e5d3b2efea667..42f93757186603787e10fb7d1a35d900690da6b1 100644 (file)
@@ -1534,14 +1534,13 @@ FGRenderer::setupView( void )
     // plug in the GUI
     osg::Camera* guiCamera = getGUICamera(CameraGroup::getDefault());
     if (guiCamera) {
-        
-        osg::Geode* geode = new osg::Geode;
-        geode->addDrawable(new SGPuDrawable);
-        geode->addDrawable(new SGHUDDrawable);
-        guiCamera->addChild(geode);
-      
-        
-      guiCamera->addChild(FGPanelNode::create2DPanelNode());
+      osg::Geode* geode = new osg::Geode;
+      geode->addDrawable(new SGHUDDrawable);
+      geode->addDrawable(new SGPuDrawable);
+
+      // Draw first (eg. before Canvas GUI)
+      guiCamera->insertChild(0, geode);
+      guiCamera->insertChild(0, FGPanelNode::create2DPanelNode());
     }
     
     osg::Switch* sw = new osg::Switch;