Object names for more scene-graph nodes.
This commit is contained in:
parent
0239e9c8c8
commit
312be5410a
4 changed files with 24 additions and 5 deletions
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -374,6 +374,7 @@ private:
|
|||
|
||||
osg::Node* fgCreateSplashNode() {
|
||||
osg::Group* group = new osg::Group;
|
||||
group->setName("splashGroup");
|
||||
group->setUpdateCallback(new FGSplashGroupUpdateCallback);
|
||||
return group;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue