From 6cca3b8f4993800749fd718f0a3f4c5b09361ac5 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 12 Dec 2007 17:59:06 +0000 Subject: [PATCH] Added a osgViewer::setSceneData(ref_ptr) method. --- include/osgViewer/View | 5 ++++- src/osgViewer/View.cpp | 13 ++++++------- src/osgWrappers/osgViewer/View.cpp | 7 ++++++- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/include/osgViewer/View b/include/osgViewer/View index fe1a0af31..38227ec70 100644 --- a/include/osgViewer/View +++ b/include/osgViewer/View @@ -60,7 +60,10 @@ class OSGVIEWER_EXPORT View : public osg::View, public osgGA::GUIActionAdapter const Scene* getScene() const { return _scene.get(); } /** Set the scene graph that the View will use.*/ - virtual void setSceneData(osg::Node* node); + inline void setSceneData(osg::Node* node) { setSceneData(osg::ref_ptr(node)); } + + /** Set the scene graph that the View will use.*/ + virtual void setSceneData(osg::ref_ptr node); /** Get the View's scene graph.*/ osg::Node* getSceneData() { return _scene.valid() ? _scene->getSceneData() : 0; } diff --git a/src/osgViewer/View.cpp b/src/osgViewer/View.cpp index a013bfb7e..b16013f9a 100644 --- a/src/osgViewer/View.cpp +++ b/src/osgViewer/View.cpp @@ -241,16 +241,15 @@ void View::setStartTick(osg::Timer_t tick) _startTick = tick; } -void View::setSceneData(osg::Node* node) +void View::setSceneData(osg::ref_ptr node) { - if (_scene->getSceneData()==node) return; + if (node==_scene->getSceneData()) return; - Scene* scene = Scene::getScene(node); - + osg::ref_ptr scene = Scene::getScene(node.get()); - if (scene) + if (scene.valid()) { - osg::notify(osg::INFO)<<"View::setSceneData() Sharing scene "<setSceneData(node); + _scene->setSceneData(node.get()); } if (getSceneData()) diff --git a/src/osgWrappers/osgViewer/View.cpp b/src/osgWrappers/osgViewer/View.cpp index 0b08fddfe..3e00639b4 100644 --- a/src/osgWrappers/osgViewer/View.cpp +++ b/src/osgWrappers/osgViewer/View.cpp @@ -110,10 +110,15 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::View) "", ""); I_Method1(void, setSceneData, IN, osg::Node *, node, - Properties::VIRTUAL, + Properties::NON_VIRTUAL, __void__setSceneData__osg_Node_P1, "Set the scene graph that the View will use. ", ""); + I_Method1(void, setSceneData, IN, osg::ref_ptr< osg::Node >, node, + Properties::VIRTUAL, + __void__setSceneData__osg_ref_ptrT1_osg_Node_, + "Set the scene graph that the View will use. ", + ""); I_Method0(osg::Node *, getSceneData, Properties::NON_VIRTUAL, __osg_Node_P1__getSceneData,