]> git.mxchange.org Git - flightgear.git/commitdiff
Object names for more scene-graph nodes.
authorJames Turner <zakalawe@mac.com>
Sat, 22 Jun 2013 13:34:03 +0000 (14:34 +0100)
committerJames Turner <zakalawe@mac.com>
Sat, 22 Jun 2013 13:34:03 +0000 (14:34 +0100)
src/Scenery/scenery.cxx
src/Viewer/CameraGroup.cxx
src/Viewer/renderer.cxx
src/Viewer/splash.cxx

index 55dcb6de8bee2920009b02b1641ce1e172f2c452..379538ba8188cdbb2410da475abc0fbed1c634e9 100644 (file)
@@ -234,7 +234,7 @@ FGScenery::~FGScenery() {
 void FGScenery::init() {
     // Scene graph root
     scene_graph = new osg::Group;
-    scene_graph->setName( "Scene" );
+    scene_graph->setName( "FGScenery" );
 
     // Terrain branch
     terrain_branch = new osg::Group;
index 255e675f4e9e7586878a9ffecba24b9c046f882b..13575fac83028fdd68ffdd8ea0848ab1d7a8e70a 100644 (file)
@@ -756,6 +756,7 @@ CameraInfo* CameraGroup::buildCamera(SGPropertyNode* cameraNode)
         return 0;
     }
     Camera* camera = new Camera;
+    camera->setName("windowCamera");
     camera->setAllowEventFocus(false);
     camera->setGraphicsContext(window->gc.get());
     camera->setViewport(new Viewport);
@@ -1020,6 +1021,7 @@ CameraInfo* CameraGroup::buildGUICamera(SGPropertyNode* cameraNode,
     const int cameraFlags = GUI | DO_INTERSECTION_TEST;
 
     CameraInfo* result = new CameraInfo(cameraFlags);
+    result->name = "GUI camera";
     // The camera group will always update the camera
     camera->setReferenceFrame(Transform::ABSOLUTE_RF);
 
index 6dcfd315999b35b1b90c830ba2ecddbbd61eb359..9a0817c7dccddec41896bfc3e7d6f6764540553c 100644 (file)
@@ -409,6 +409,9 @@ FGRenderer::FGRenderer() :
 #ifdef FG_JPEG_SERVER
    jpgRenderFrame = updateRenderer;
 #endif
+    
+    // it's not the real root, whatever that means
+    mRoot->setName("fakeRoot"); 
 
    _numCascades = 4;
    _cascadeFar[0] = 5.f;
@@ -431,7 +434,10 @@ FGRenderer::~FGRenderer()
 void
 FGRenderer::splashinit( void ) {
     osgViewer::Viewer* viewer = getViewer();
+    viewer->setName("osgViewer");
     mRealRoot = dynamic_cast<osg::Group*>(viewer->getSceneData());
+    mRealRoot->setName("realRoot");
+    
     ref_ptr<Node> splashNode = fgCreateSplashNode();
     if (_classicalRenderer) {
         mRealRoot->addChild(splashNode.get());
@@ -639,10 +645,12 @@ FGRenderer::buildClassicalPipeline(CameraGroup* cgroup, unsigned flags, osg::Cam
     CameraInfo* info = new CameraInfo(flags);
     // The camera group will always update the camera
     camera->setReferenceFrame(Transform::ABSOLUTE_RF);
-
+    info->name = "classic";
+    
     Camera* farCamera = 0;
     if ((flags & (CameraGroup::GUI | CameraGroup::ORTHO)) == 0) {
         farCamera = new Camera;
+        farCamera->setName("farCamera");
         farCamera->setAllowEventFocus(camera->getAllowEventFocus());
         farCamera->setGraphicsContext(camera->getGraphicsContext());
         farCamera->setCullingMode(camera->getCullingMode());
@@ -1441,6 +1449,7 @@ FGRenderer::setupView( void )
     stateSet->setAttribute(hint);
 
     osg::Group* sceneGroup = new osg::Group;
+    sceneGroup->setName("rendererScene");
     sceneGroup->addChild(globals->get_scenery()->get_scene_graph());
     sceneGroup->setNodeMask(~simgear::BACKGROUND_BIT);
 
@@ -1460,6 +1469,7 @@ FGRenderer::setupView( void )
     // affect geometry anywhere in the scene graph that has its light
     // number enabled in a state set. 
     LightSource* lightSource = new LightSource;
+    lightSource->setName("FGLightSource");
     lightSource->getLight()->setDataVariance(Object::DYNAMIC);
     // relative because of CameraView being just a clever transform node
     lightSource->setReferenceFrame(osg::LightSource::RELATIVE_RF);
@@ -1468,6 +1478,7 @@ FGRenderer::setupView( void )
     mRealRoot->addChild(lightSource);
     // we need a white diffuse light for the phase of the moon
     osg::LightSource* sunLight = new osg::LightSource;
+    sunLight->setName("sunLightSource");
     sunLight->getLight()->setDataVariance(Object::DYNAMIC);
     sunLight->getLight()->setLightNum(1);
     sunLight->setUpdateCallback(new FGLightSourceUpdateCallback(true));
@@ -1477,6 +1488,7 @@ FGRenderer::setupView( void )
     // Hang a StateSet above the sky subgraph in order to turn off
     // light 0
     Group* skyGroup = new Group;
+    skyGroup->setName("rendererSkyParent");
     StateSet* skySS = skyGroup->getOrCreateStateSet();
     skySS->setMode(GL_LIGHT0, StateAttribute::OFF);
     skyGroup->addChild(_sky->getPreRoot());
@@ -1522,6 +1534,7 @@ FGRenderer::setupView( void )
     }
     
     osg::Switch* sw = new osg::Switch;
+    sw->setName("scenerySwitch");
     sw->setUpdateCallback(new FGScenerySwitchCallback);
     sw->addChild(mRoot.get());
     mRealRoot->addChild(sw);
@@ -1795,10 +1808,12 @@ FGRenderer::pick(std::vector<SGSceneryPick>& pickList, const osg::Vec2& windowPo
          ++hit) {
         const osg::NodePath& np = hit->nodePath;
         osg::NodePath::const_reverse_iterator npi;
+        
         for (npi = np.rbegin(); npi != np.rend(); ++npi) {
             SGSceneUserData* ud = SGSceneUserData::getSceneUserData(*npi);
-            if (!ud)
+            if (!ud || (ud->getNumPickCallbacks() == 0))
                 continue;
+            
             for (unsigned i = 0; i < ud->getNumPickCallbacks(); ++i) {
                 SGPickCallback* pickCallback = ud->getPickCallback(i);
                 if (!pickCallback)
@@ -1812,9 +1827,10 @@ FGRenderer::pick(std::vector<SGSceneryPick>& pickList, const osg::Vec2& windowPo
 
                 sceneryPick.callback = pickCallback;
                 pickList.push_back(sceneryPick);
-            }
-        }
+            } // of installed pick callbacks iteration
+        } // of reverse node path walk
     }
+    
     return !pickList.empty();
 }
 
index 65dfce1b9a2505f760682c5306220470a67d0652..5615efc160570ada20ad8a5319934184e046a2ac 100644 (file)
@@ -374,6 +374,7 @@ private:
 
 osg::Node* fgCreateSplashNode() {
   osg::Group* group = new osg::Group;
+    group->setName("splashGroup");
   group->setUpdateCallback(new FGSplashGroupUpdateCallback);
   return group;
 }