From: Thomas Geymayer Date: Tue, 24 Jun 2014 07:14:57 +0000 (+0200) Subject: Draw Canvas GUI on top of PUI (to conform with event order). X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=c65b2eb6b0adf2763e42e40aa39870f8bfdc0143;p=flightgear.git Draw Canvas GUI on top of PUI (to conform with event order). --- diff --git a/src/Viewer/CameraGroup.cxx b/src/Viewer/CameraGroup.cxx index 1600ee564..53bd51517 100644 --- a/src/Viewer/CameraGroup.cxx +++ b/src/Viewer/CameraGroup.cxx @@ -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; diff --git a/src/Viewer/renderer.cxx b/src/Viewer/renderer.cxx index 9728f0f72..42f937571 100644 --- a/src/Viewer/renderer.cxx +++ b/src/Viewer/renderer.cxx @@ -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;