diff --git a/src/osgPlugins/p3d/ReaderWriterP3D.cpp b/src/osgPlugins/p3d/ReaderWriterP3D.cpp index b0fe3a5db..d920975ea 100644 --- a/src/osgPlugins/p3d/ReaderWriterP3D.cpp +++ b/src/osgPlugins/p3d/ReaderWriterP3D.cpp @@ -1561,11 +1561,14 @@ osgDB::ReaderWriter::ReadResult ReaderWriterP3DXML::readNode(const std::string& osgDB::getDataFilePathList() = previousPaths; + - return constructor.takePresentation(); - /* - std::cout<<"readSlide="<getName()<(nv); + if (ev) + { + if (node->getNumChildrenRequiringEventTraversal()>0) traverse(node,nv); + + if (ev->getActionAdapter() && !ev->getEvents().empty()) + { + for(osgGA::EventQueue::Events::iterator itr = ev->getEvents().begin(); + itr != ev->getEvents().end(); + ++itr) + { + handleWithCheckAgainstIgnoreHandledEventsMask(*(*itr), *(ev->getActionAdapter()), node, nv); + } + } + } +} + bool SlideEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter& aa) { + + if (!_viewer) + { + _viewer = dynamic_cast(&aa); + selectSlide(0); + home(); + osg::notify(osg::NOTICE)<<"Assigned viewer. to SlideEventHandler"<getCamera()->getViewMatrix(),0.0f,0.0f); - _viewer->getSceneData()->accept(uav); + if (_viewer.valid()) + { + UpdateLightVisitor uav(_viewer->getCamera()->getViewMatrix(),0.0f,0.0f); + _viewer->getSceneData()->accept(uav); + } } bool SlideEventHandler::home(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter& aa) diff --git a/src/osgPlugins/p3d/SlideEventHandler.h b/src/osgPlugins/p3d/SlideEventHandler.h index cd3f7b402..9e8f75325 100644 --- a/src/osgPlugins/p3d/SlideEventHandler.h +++ b/src/osgPlugins/p3d/SlideEventHandler.h @@ -205,6 +205,9 @@ public: virtual void accept(osgGA::GUIEventHandlerVisitor& v) { v.visit(*this); } + /** Event traversal node callback method.*/ + virtual void operator()(osg::Node* node, osg::NodeVisitor* nv); + virtual bool handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&); virtual void getUsage(osg::ApplicationUsage& usage) const; @@ -280,13 +283,13 @@ protected: osg::observer_ptr _viewer; - osg::ref_ptr _showSwitch; + osg::observer_ptr _showSwitch; unsigned int _activePresentation; - osg::ref_ptr _presentationSwitch; + osg::observer_ptr _presentationSwitch; unsigned int _activeSlide; - osg::ref_ptr _slideSwitch; + osg::observer_ptr _slideSwitch; unsigned int _activeLayer; bool _firstTraversal;