Added FramStamp into osgViewer::Viewer and added ability to handle setSceneData

during during the application running.
This commit is contained in:
Robert Osfield
2007-01-15 14:46:16 +00:00
parent 4b97e30d22
commit b06dbda224
5 changed files with 92 additions and 42 deletions

View File

@@ -39,7 +39,9 @@ class OSGVIEWER_EXPORT Scene : public virtual osg::Referenced
osg::Node* getSceneData();
const osg::Node* getSceneData() const;
void setFrameStamp(osg::FrameStamp* frameStamp);
osg::FrameStamp* getFrameStamp() { return _frameStamp.get(); }
const osg::FrameStamp* getFrameStamp() const { return _frameStamp.get(); }
void setDatabasePager(osgDB::DatabasePager* dp);
osgDB::DatabasePager* getDatabasePager() { return _databasePager.get(); }

View File

@@ -32,7 +32,7 @@ class OSGVIEWER_EXPORT View : public osg::View, public osgGA::GUIActionAdapter
View();
void setSceneData(osg::Node* node);
virtual void setSceneData(osg::Node* node);
osg::Node* getSceneData() { return _scene.valid() ? _scene->getSceneData() : 0; }
const osg::Node* getSceneData() const { return _scene.valid() ? _scene->getSceneData() : 0; }

View File

@@ -20,8 +20,6 @@
namespace osgViewer {
// WARNING ** Under development do not use, yet :-)
/** Viewer holds a single view on to a single scene..*/
class OSGVIEWER_EXPORT Viewer : public osgViewer::View
{
@@ -40,9 +38,18 @@ class OSGVIEWER_EXPORT Viewer : public osgViewer::View
bool done() const { return _done; }
osg::FrameStamp* getFrameStamp();
const osg::FrameStamp* getFrameStamp() const;
void Viewer::setStartTick(osg::Timer_t tick);
osg::Timer_t getStartTick() const { return _startTick; }
void setReferenceTime(double time=0.0);
void setFrameStamp(osg::FrameStamp* frameStamp);
osg::FrameStamp* getFrameStamp() { return _frameStamp.get(); }
const osg::FrameStamp* getFrameStamp() const { return _frameStamp.get(); }
virtual void setSceneData(osg::Node* node);
enum ThreadingModel
{
@@ -124,15 +131,16 @@ class OSGVIEWER_EXPORT Viewer : public osgViewer::View
typedef std::vector<osgViewer::GraphicsWindow*> Windows;
void getWindows(Windows& windows, bool onlyValid=true);
void stopThreading();
void startThreading();
void setUpRenderingSupport();
protected:
void init();
void stopThreading();
void startThreading();
void checkWindowStatus();
void setUpRenderingSupport();
bool _firstFrame;
@@ -150,6 +158,9 @@ class OSGVIEWER_EXPORT Viewer : public osgViewer::View
unsigned int _numThreadsOnBarrier;
osg::Timer_t _startTick;
osg::ref_ptr<osg::FrameStamp> _frameStamp;
osg::observer_ptr<osg::Camera> _cameraWithFocus;
osg::ref_ptr<osgGA::EventVisitor> _eventVisitor;