From 91900254f003c3141256d4277649c1f997dc2b69 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Sun, 30 Sep 2007 11:37:00 +0000 Subject: [PATCH] Moved ViewerBase class out into its own header and source file. Improved the support for stats collection in CompositeViewer/StatsHandler. --- include/osg/View | 11 - include/osgViewer/CompositeViewer | 8 +- include/osgViewer/View | 174 +-------- include/osgViewer/Viewer | 3 +- include/osgViewer/ViewerBase | 221 ++++++++++++ include/osgViewer/ViewerEventHandlers | 4 +- src/osgViewer/CMakeLists.txt | 2 + src/osgViewer/CompositeViewer.cpp | 113 +++--- src/osgViewer/StatsHandler.cpp | 252 +++++++------- src/osgViewer/View.cpp | 38 -- src/osgViewer/Viewer.cpp | 6 +- src/osgViewer/ViewerBase.cpp | 60 ++++ src/osgWrappers/osg/View.cpp | 19 - src/osgWrappers/osgViewer/CompositeViewer.cpp | 6 + src/osgWrappers/osgViewer/View.cpp | 280 +-------------- src/osgWrappers/osgViewer/Viewer.cpp | 6 + src/osgWrappers/osgViewer/ViewerBase.cpp | 329 ++++++++++++++++++ .../osgViewer/ViewerEventHandlers.cpp | 8 +- 18 files changed, 835 insertions(+), 705 deletions(-) create mode 100644 include/osgViewer/ViewerBase create mode 100644 src/osgViewer/ViewerBase.cpp create mode 100644 src/osgWrappers/osgViewer/ViewerBase.cpp diff --git a/include/osg/View b/include/osg/View index ea90314b5..c52de029b 100644 --- a/include/osg/View +++ b/include/osg/View @@ -38,15 +38,6 @@ class OSG_EXPORT View : public virtual osg::Object /** Take all the settings, Camera and Slaves from the passed in view, leaving it empty. */ virtual void take(View& rhs); - /** Set the Stats object used for collect various frame related timing and scene graph stats.*/ - void setStats(osg::Stats* stats) { _stats = stats; } - - /** Get the Stats object.*/ - osg::Stats* getStats() { return _stats.get(); } - - /** Get the const Stats object.*/ - const osg::Stats* getStats() const { return _stats.get(); } - /** Options for controlling the global lighting used for the view.*/ enum LightingMode { @@ -139,8 +130,6 @@ class OSG_EXPORT View : public virtual osg::Object virtual osg::GraphicsOperation* createRenderer(osg::Camera*) { return 0; } - osg::ref_ptr _stats; - LightingMode _lightingMode; osg::ref_ptr _light; diff --git a/include/osgViewer/CompositeViewer b/include/osgViewer/CompositeViewer index c2e9d8c12..5f5d00ddc 100644 --- a/include/osgViewer/CompositeViewer +++ b/include/osgViewer/CompositeViewer @@ -127,6 +127,8 @@ class OSGVIEWER_EXPORT CompositeViewer : public ViewerBase, public virtual osg:: virtual void getScenes(Scenes& scenes, bool onlyValid=true); + virtual void getViews(Views& views, bool onlyValid=true); + /** Set up the threading and processor affinity as per the viewers threading model.*/ virtual void setUpThreading(); @@ -147,9 +149,9 @@ class OSGVIEWER_EXPORT CompositeViewer : public ViewerBase, public virtual osg:: void init(); void checkWindowStatus(); - - typedef std::vector< osg::ref_ptr > Views; - Views _views; + + typedef std::vector< osg::ref_ptr > RefViews; + RefViews _views; bool _firstFrame; diff --git a/include/osgViewer/View b/include/osgViewer/View index bca0f3105..f9475511e 100644 --- a/include/osgViewer/View +++ b/include/osgViewer/View @@ -26,182 +26,10 @@ #include #include -#include +#include namespace osgViewer { -#define USE_REFERENCE_TIME DBL_MAX - -/** ViewerBase is the view base class that is inhertied by both Viewer and CompositeViewer.*/ -class OSGVIEWER_EXPORT ViewerBase : public virtual osg::Object -{ - public: - - ViewerBase(); - ViewerBase(const ViewerBase& vb); - - - /** read the viewer configuration from a configuration file.*/ - virtual bool readConfiguration(const std::string& filename) = 0; - - /** Get whether at least of one of this viewers windows are realized.*/ - virtual bool isRealized() const = 0; - - /** set up windows and associated threads.*/ - virtual void realize() = 0; - - enum ThreadingModel - { - SingleThreaded, - CullDrawThreadPerContext, - ThreadPerContext = CullDrawThreadPerContext, - DrawThreadPerContext, - CullThreadPerCameraDrawThreadPerContext, - ThreadPerCamera = CullThreadPerCameraDrawThreadPerContext, - AutomaticSelection - }; - - /** Set the threading model the rendering traversals will use.*/ - virtual void setThreadingModel(ThreadingModel threadingModel) = 0; - - /** Get the threading model the rendering traversals will use.*/ - ThreadingModel getThreadingModel() const { return _threadingModel; } - - - /** Set the done flag to singnal the viewer's work is done and should exit the frame loop.*/ - void setDone(bool done) { _done = done; } - - /** Reurn true if viewer's work is done and should exit the frame loop.*/ - bool done() const { return _done; } - - /** Set the EventVisitor. */ - void setEventVisitor(osgGA::EventVisitor* eventVisitor) { _eventVisitor = eventVisitor; } - - /** Get the EventVisitor. */ - osgGA::EventVisitor* getEventVisitor() { return _eventVisitor.get(); } - - /** Get the const EventVisitor. */ - const osgGA::EventVisitor* getEventVisitor() const { return _eventVisitor.get(); } - - /** Set the key event that the viewer checks on each frame to see if the viewer's done flag should be set to - * signal end of viewers main loop. - * Default value is Escape (osgGA::GUIEVentAdapter::KEY_Escape). - * Setting to 0 switches off the feature.*/ - void setKeyEventSetsDone(int key) { _keyEventSetsDone = key; } - - /** get the key event that the viewer checks on each frame to see if the viewer's done flag.*/ - int getKeyEventSetsDone() const { return _keyEventSetsDone; } - - /** if the flag is true, the viewer set its done flag when a QUIT_APPLICATION is received, false disables this feature */ - void setQuitEventSetsDone(bool flag) { _quitEventSetsDone = flag; } - - /** @return true if the viewer respond to the QUIT_APPLICATION-event */ - bool getQuitEventSetsDone() const { return _quitEventSetsDone; } - - - - /** Set the UpdateVisitor. */ - void setUpdateVisitor(osgUtil::UpdateVisitor* updateVisitor) { _updateVisitor = updateVisitor; } - - /** Get the UpdateVisitor. */ - osgUtil::UpdateVisitor* getUpdateVisitor() { return _updateVisitor.get(); } - - /** Get the const UpdateVisitor. */ - const osgUtil::UpdateVisitor* getUpdateVisitor() const { return _updateVisitor.get(); } - - - /** Set the Update OperationQueue. */ - void setUpdateOperations(osg::OperationQueue* operations) { _updateOperations = operations; } - - /** Get the Update OperationQueue. */ - osg::OperationQueue* getUpdateOperations() { return _updateOperations.get(); } - - /** Get the const Update OperationQueue. */ - const osg::OperationQueue* getUpdateOperations() const { return _updateOperations.get(); } - - /** Add an update operation.*/ - void addUpdateOperation(osg::Operation* operation); - - /** Remove an update operation.*/ - void removeUpdateOperation(osg::Operation* operation); - - - /** Execute a main frame loop. - * Equivialant to while (!viewer.done()) viewer.frame(); - * Also calls realize() if the viewer is not already realized, - * and installs trackball manipulator if one is not already assigned. - */ - virtual int run() = 0; - - /** Render a complete new frame. - * Calls advance(), eventTraversal(), updateTraversal(), renderingTraversals(). */ - virtual void frame(double simulationTime=USE_REFERENCE_TIME) = 0; - - virtual void advance(double simulationTime=USE_REFERENCE_TIME) = 0; - - virtual void eventTraversal() = 0; - - virtual void updateTraversal() = 0; - - virtual void renderingTraversals() = 0; - - typedef std::vector Cameras; - virtual void getCameras(Cameras& cameras, bool onlyActive=true) = 0; - - typedef std::vector Contexts; - virtual void getContexts(Contexts& contexts, bool onlyValid=true) = 0; - - typedef std::vector Windows; - virtual void getWindows(Windows& windows, bool onlyValid=true) = 0; - - typedef std::vector Threads; - virtual void getAllThreads(Threads& threads, bool onlyActive=true) = 0; - - typedef std::vector OperationThreads; - virtual void getOperationThreads(OperationThreads& threads, bool onlyActive=true) = 0; - - typedef std::vector Scenes; - virtual void getScenes(Scenes& scenes, bool onlyValid=true) = 0; - - /** Set the graphics operation to call on realization of the viewers graphics windows.*/ - void setRealizeOperation(osg::Operation* op) { _realizeOperation = op; } - - /** Get the graphics operation to call on realization of the viewers graphics windows.*/ - osg::Operation* getRealizeOperation() { return _realizeOperation.get(); } - - /** Set up the threading and processor affinity as per the viewers threading model.*/ - virtual void setUpThreading() = 0; - - /** Return true if viewer threads are running. */ - bool areThreadsRunning() const { return _threadsRunning; } - - /** Stop any threads begin run by viewer.*/ - virtual void stopThreading() = 0; - - /** Start any threads required by the viewer.*/ - virtual void startThreading() = 0; - - /** Get the keyboard and mouse usage of this viewer.*/ - virtual void getUsage(osg::ApplicationUsage& usage) const = 0; - - protected: - - bool _done; - int _keyEventSetsDone; - bool _quitEventSetsDone; - - ThreadingModel _threadingModel; - bool _threadsRunning; - - osg::ref_ptr _eventVisitor; - - osg::ref_ptr _updateOperations; - osg::ref_ptr _updateVisitor; - - osg::ref_ptr _realizeOperation; - -}; - /** View holds a single view on a scene, this view may be composed of one or more slave cameras.*/ class OSGVIEWER_EXPORT View : public osg::View, public osgGA::GUIActionAdapter { diff --git a/include/osgViewer/Viewer b/include/osgViewer/Viewer index c2bb25a20..3e29985c3 100644 --- a/include/osgViewer/Viewer +++ b/include/osgViewer/Viewer @@ -120,6 +120,8 @@ class OSGVIEWER_EXPORT Viewer : public ViewerBase, public osgViewer::View virtual void getScenes(Scenes& scenes, bool onlyValid=true); + virtual void getViews(Views& views, bool onlyValid=true); + /** Set up the threading and processor affinity as per the viewers threading model.*/ virtual void setUpThreading(); @@ -162,7 +164,6 @@ class OSGVIEWER_EXPORT Viewer : public ViewerBase, public osgViewer::View bool _firstFrame; - BarrierPosition _endBarrierPosition; osg::ref_ptr _startRenderingBarrier; diff --git a/include/osgViewer/ViewerBase b/include/osgViewer/ViewerBase new file mode 100644 index 000000000..9fab60897 --- /dev/null +++ b/include/osgViewer/ViewerBase @@ -0,0 +1,221 @@ +/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield + * + * This library is open source and may be redistributed and/or modified under + * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or + * (at your option) any later version. The full license is in LICENSE file + * included with this distribution, and on the openscenegraph.org website. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * OpenSceneGraph Public License for more details. +*/ + +#ifndef OSGVIEWER_VIEWERBASE +#define OSGVIEWER_VIEWERBASE 1 + +#include + +#include + +#include +#include +#include + +#include +#include + +namespace osgViewer { + +#define USE_REFERENCE_TIME DBL_MAX + +class View; + +/** ViewerBase is the view base class that is inhertied by both Viewer and CompositeViewer.*/ +class OSGVIEWER_EXPORT ViewerBase : public virtual osg::Object +{ + public: + + ViewerBase(); + ViewerBase(const ViewerBase& vb); + + + /** Set the Stats object used for collect various frame related timing and scene graph stats.*/ + void setStats(osg::Stats* stats) { _stats = stats; } + + /** Get the Viewers Stats object.*/ + osg::Stats* getStats() { return _stats.get(); } + + /** Get the Viewers Stats object.*/ + const osg::Stats* getStats() const { return _stats.get(); } + + + /** read the viewer configuration from a configuration file.*/ + virtual bool readConfiguration(const std::string& filename) = 0; + + /** Get whether at least of one of this viewers windows are realized.*/ + virtual bool isRealized() const = 0; + + /** set up windows and associated threads.*/ + virtual void realize() = 0; + + enum ThreadingModel + { + SingleThreaded, + CullDrawThreadPerContext, + ThreadPerContext = CullDrawThreadPerContext, + DrawThreadPerContext, + CullThreadPerCameraDrawThreadPerContext, + ThreadPerCamera = CullThreadPerCameraDrawThreadPerContext, + AutomaticSelection + }; + + /** Set the threading model the rendering traversals will use.*/ + virtual void setThreadingModel(ThreadingModel threadingModel) = 0; + + /** Get the threading model the rendering traversals will use.*/ + ThreadingModel getThreadingModel() const { return _threadingModel; } + + + /** Set the done flag to singnal the viewer's work is done and should exit the frame loop.*/ + void setDone(bool done) { _done = done; } + + /** Reurn true if viewer's work is done and should exit the frame loop.*/ + bool done() const { return _done; } + + /** Set the EventVisitor. */ + void setEventVisitor(osgGA::EventVisitor* eventVisitor) { _eventVisitor = eventVisitor; } + + /** Get the EventVisitor. */ + osgGA::EventVisitor* getEventVisitor() { return _eventVisitor.get(); } + + /** Get the const EventVisitor. */ + const osgGA::EventVisitor* getEventVisitor() const { return _eventVisitor.get(); } + + /** Set the key event that the viewer checks on each frame to see if the viewer's done flag should be set to + * signal end of viewers main loop. + * Default value is Escape (osgGA::GUIEVentAdapter::KEY_Escape). + * Setting to 0 switches off the feature.*/ + void setKeyEventSetsDone(int key) { _keyEventSetsDone = key; } + + /** get the key event that the viewer checks on each frame to see if the viewer's done flag.*/ + int getKeyEventSetsDone() const { return _keyEventSetsDone; } + + /** if the flag is true, the viewer set its done flag when a QUIT_APPLICATION is received, false disables this feature */ + void setQuitEventSetsDone(bool flag) { _quitEventSetsDone = flag; } + + /** @return true if the viewer respond to the QUIT_APPLICATION-event */ + bool getQuitEventSetsDone() const { return _quitEventSetsDone; } + + + + /** Set the UpdateVisitor. */ + void setUpdateVisitor(osgUtil::UpdateVisitor* updateVisitor) { _updateVisitor = updateVisitor; } + + /** Get the UpdateVisitor. */ + osgUtil::UpdateVisitor* getUpdateVisitor() { return _updateVisitor.get(); } + + /** Get the const UpdateVisitor. */ + const osgUtil::UpdateVisitor* getUpdateVisitor() const { return _updateVisitor.get(); } + + + /** Set the Update OperationQueue. */ + void setUpdateOperations(osg::OperationQueue* operations) { _updateOperations = operations; } + + /** Get the Update OperationQueue. */ + osg::OperationQueue* getUpdateOperations() { return _updateOperations.get(); } + + /** Get the const Update OperationQueue. */ + const osg::OperationQueue* getUpdateOperations() const { return _updateOperations.get(); } + + /** Add an update operation.*/ + void addUpdateOperation(osg::Operation* operation); + + /** Remove an update operation.*/ + void removeUpdateOperation(osg::Operation* operation); + + + /** Execute a main frame loop. + * Equivialant to while (!viewer.done()) viewer.frame(); + * Also calls realize() if the viewer is not already realized, + * and installs trackball manipulator if one is not already assigned. + */ + virtual int run() = 0; + + /** Render a complete new frame. + * Calls advance(), eventTraversal(), updateTraversal(), renderingTraversals(). */ + virtual void frame(double simulationTime=USE_REFERENCE_TIME) = 0; + + virtual void advance(double simulationTime=USE_REFERENCE_TIME) = 0; + + virtual void eventTraversal() = 0; + + virtual void updateTraversal() = 0; + + virtual void renderingTraversals() = 0; + + typedef std::vector Cameras; + virtual void getCameras(Cameras& cameras, bool onlyActive=true) = 0; + + typedef std::vector Contexts; + virtual void getContexts(Contexts& contexts, bool onlyValid=true) = 0; + + typedef std::vector Windows; + virtual void getWindows(Windows& windows, bool onlyValid=true) = 0; + + typedef std::vector Threads; + virtual void getAllThreads(Threads& threads, bool onlyActive=true) = 0; + + typedef std::vector OperationThreads; + virtual void getOperationThreads(OperationThreads& threads, bool onlyActive=true) = 0; + + typedef std::vector Scenes; + virtual void getScenes(Scenes& scenes, bool onlyValid=true) = 0; + + typedef std::vector Views; + virtual void getViews(Views& views, bool onlyValid=true) = 0; + + + /** Set the graphics operation to call on realization of the viewers graphics windows.*/ + void setRealizeOperation(osg::Operation* op) { _realizeOperation = op; } + + /** Get the graphics operation to call on realization of the viewers graphics windows.*/ + osg::Operation* getRealizeOperation() { return _realizeOperation.get(); } + + /** Set up the threading and processor affinity as per the viewers threading model.*/ + virtual void setUpThreading() = 0; + + /** Return true if viewer threads are running. */ + bool areThreadsRunning() const { return _threadsRunning; } + + /** Stop any threads begin run by viewer.*/ + virtual void stopThreading() = 0; + + /** Start any threads required by the viewer.*/ + virtual void startThreading() = 0; + + /** Get the keyboard and mouse usage of this viewer.*/ + virtual void getUsage(osg::ApplicationUsage& usage) const = 0; + + protected: + + osg::ref_ptr _stats; + + bool _done; + int _keyEventSetsDone; + bool _quitEventSetsDone; + + ThreadingModel _threadingModel; + bool _threadsRunning; + + osg::ref_ptr _eventVisitor; + + osg::ref_ptr _updateOperations; + osg::ref_ptr _updateVisitor; + + osg::ref_ptr _realizeOperation; + +}; +} + +#endif diff --git a/include/osgViewer/ViewerEventHandlers b/include/osgViewer/ViewerEventHandlers index 13810f09d..37663b373 100644 --- a/include/osgViewer/ViewerEventHandlers +++ b/include/osgViewer/ViewerEventHandlers @@ -101,7 +101,7 @@ class OSGVIEWER_EXPORT StatsHandler : public osgGA::GUIEventHandler protected: - void setUpHUDCamera(osgViewer::View* view); + void setUpHUDCamera(osgViewer::ViewerBase* viewer); osg::Geometry* createGeometry(const osg::Vec3& pos, float height, const osg::Vec4& colour, unsigned int numBlocks); @@ -111,7 +111,7 @@ class OSGVIEWER_EXPORT StatsHandler : public osgGA::GUIEventHandler osg::Node* createCameraStats(const std::string& font, osg::Vec3& pos, float startBlocks, bool aquireGPUStats, float characterSize, osg::Stats* viewerStats, osg::Camera* camera); - void setUpScene(osgViewer::View* view); + void setUpScene(osgViewer::ViewerBase* viewer); void updateThreadingModelText(); diff --git a/src/osgViewer/CMakeLists.txt b/src/osgViewer/CMakeLists.txt index 79e8a7bbf..cbe3cff34 100644 --- a/src/osgViewer/CMakeLists.txt +++ b/src/osgViewer/CMakeLists.txt @@ -17,6 +17,7 @@ SET(LIB_PUBLIC_HEADERS ${HEADER_PATH}/Version ${HEADER_PATH}/View ${HEADER_PATH}/Viewer + ${HEADER_PATH}/ViewerBase ${HEADER_PATH}/ViewerEventHandlers ) @@ -29,6 +30,7 @@ SET(LIB_COMMON_FILES Version.cpp View.cpp Viewer.cpp + ViewerBase.cpp ViewerEventHandlers.cpp ) diff --git a/src/osgViewer/CompositeViewer.cpp b/src/osgViewer/CompositeViewer.cpp index 02cb3304b..df6f499de 100644 --- a/src/osgViewer/CompositeViewer.cpp +++ b/src/osgViewer/CompositeViewer.cpp @@ -71,7 +71,7 @@ void CompositeViewer::constructorInit() _updateVisitor = new osgUtil::UpdateVisitor; _updateVisitor->setFrameStamp(_frameStamp.get()); - + setStats(new osg::Stats("CompsiteViewer")); } CompositeViewer::~CompositeViewer() @@ -126,14 +126,13 @@ void CompositeViewer::addView(osgViewer::View* view) view->_viewerBase = this; view->setFrameStamp(_frameStamp.get()); - view->setStats(new osg::Stats("CompositeViewer")); if (threadsWereRuinning) startThreading(); } void CompositeViewer::removeView(osgViewer::View* view) { - for(Views::iterator itr = _views.begin(); + for(RefViews::iterator itr = _views.begin(); itr != _views.end(); ++itr) { @@ -173,7 +172,7 @@ bool CompositeViewer::isRealized() const int CompositeViewer::run() { - for(Views::iterator itr = _views.begin(); + for(RefViews::iterator itr = _views.begin(); itr != _views.end(); ++itr) { @@ -201,7 +200,7 @@ void CompositeViewer::setStartTick(osg::Timer_t tick) { _startTick = tick; - for(Views::iterator vitr = _views.begin(); + for(RefViews::iterator vitr = _views.begin(); vitr != _views.end(); ++vitr) { @@ -462,7 +461,7 @@ void CompositeViewer::init() { osg::notify(osg::INFO)<<"CompositeViewer::init()"< ContextSet; ContextSet contextSet; - for(Views::iterator vitr = _views.begin(); + for(RefViews::iterator vitr = _views.begin(); vitr != _views.end(); ++vitr) { @@ -514,7 +513,7 @@ void CompositeViewer::getCameras(Cameras& cameras, bool onlyActive) { cameras.clear(); - for(Views::iterator vitr = _views.begin(); + for(RefViews::iterator vitr = _views.begin(); vitr != _views.end(); ++vitr) { @@ -554,7 +553,7 @@ void CompositeViewer::getScenes(Scenes& scenes, bool onlyValid) typedef std::set SceneSet; SceneSet sceneSet; - for(Views::iterator vitr = _views.begin(); + for(RefViews::iterator vitr = _views.begin(); vitr != _views.end(); ++vitr) { @@ -573,6 +572,16 @@ void CompositeViewer::getScenes(Scenes& scenes, bool onlyValid) } } +void CompositeViewer::getViews(Views& views, bool onlyValid) +{ + for(RefViews::iterator vitr = _views.begin(); + vitr != _views.end(); + ++vitr) + { + views.push_back(vitr->get()); + } +} + void CompositeViewer::getAllThreads(Threads& threads, bool onlyActive) { OperationThreads operationThreads; @@ -778,23 +787,17 @@ void CompositeViewer::advance(double simulationTime) _frameStamp->setSimulationTime(simulationTime); } - for(Views::iterator vitr = _views.begin(); - vitr != _views.end(); - ++vitr) + if (getStats() && getStats()->collectStats("frame_rate")) { - if ((*vitr)->getStats() && (*vitr)->getStats()->collectStats("frame_rate")) - { - // update previous frame stats - double deltaFrameTime = _frameStamp->getReferenceTime() - prevousReferenceTime; - (*vitr)->getStats()->setAttribute(previousFrameNumber, "Frame duration", deltaFrameTime); - (*vitr)->getStats()->setAttribute(previousFrameNumber, "Frame rate", 1.0/deltaFrameTime); + // update previous frame stats + double deltaFrameTime = _frameStamp->getReferenceTime() - prevousReferenceTime; + getStats()->setAttribute(previousFrameNumber, "Frame duration", deltaFrameTime); + getStats()->setAttribute(previousFrameNumber, "Frame rate", 1.0/deltaFrameTime); - // update current frames stats - (*vitr)->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Reference time", _frameStamp->getReferenceTime()); - } - + // update current frames stats + getStats()->setAttribute(_frameStamp->getFrameNumber(), "Reference time", _frameStamp->getReferenceTime()); } - + } void CompositeViewer::setCameraWithFocus(osg::Camera* camera) @@ -803,7 +806,7 @@ void CompositeViewer::setCameraWithFocus(osg::Camera* camera) if (camera) { - for(Views::iterator vitr = _views.begin(); + for(RefViews::iterator vitr = _views.begin(); vitr != _views.end(); ++vitr) { @@ -1016,7 +1019,7 @@ void CompositeViewer::eventTraversal() // osg::notify(osg::NOTICE)<<"mouseEventState Xmin = "<getXmin()<<" Ymin="<getYmin()<<" xMax="<getXmax()<<" Ymax="<getYmax()<getStats() && (*vitr)->getStats()->collectStats("event")) - { - double endEventTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); - // update current frames stats - (*vitr)->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal begin time", beginEventTraversal); - (*vitr)->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal end time", endEventTraversal); - (*vitr)->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal time taken", endEventTraversal-beginEventTraversal); - } + if (getStats() && getStats()->collectStats("event")) + { + double endEventTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); + + // update current frames stats + getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal begin time", beginEventTraversal); + getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal end time", endEventTraversal); + getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal time taken", endEventTraversal-beginEventTraversal); } } @@ -1191,7 +1187,7 @@ void CompositeViewer::updateTraversal() _updateOperations->runOperations(this); } - for(Views::iterator vitr = _views.begin(); + for(RefViews::iterator vitr = _views.begin(); vitr != _views.end(); ++vitr) { @@ -1225,21 +1221,18 @@ void CompositeViewer::updateTraversal() view->getCamera()->setViewMatrix( view->getCameraManipulator()->getInverseMatrix()); } view->updateSlaves(); - - // stats - if (view->getStats() && view->getStats()->collectStats("update")) - { - double endUpdateTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); - - // update current frames stats - view->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal begin time", beginUpdateTraversal); - view->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal end time", endUpdateTraversal); - view->getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal time taken", endUpdateTraversal-beginUpdateTraversal); - } } - + if (getStats() && getStats()->collectStats("update")) + { + double endUpdateTraversal = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); + + // update current frames stats + getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal begin time", beginUpdateTraversal); + getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal end time", endUpdateTraversal); + getStats()->setAttribute(_frameStamp->getFrameNumber(), "Update traversal time taken", endUpdateTraversal-beginUpdateTraversal); + } } @@ -1250,6 +1243,8 @@ void CompositeViewer::renderingTraversals() if (_done) return; + double beginRenderingTraversals = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); + Scenes scenes; getScenes(scenes); @@ -1318,11 +1313,21 @@ void CompositeViewer::renderingTraversals() dp->signalEndFrame(); } } + + if (getStats() && getStats()->collectStats("update")) + { + double endRenderingTraversals = osg::Timer::instance()->delta_s(_startTick, osg::Timer::instance()->tick()); + + // update current frames stats + getStats()->setAttribute(_frameStamp->getFrameNumber(), "Rendering traversals begin time ", beginRenderingTraversals); + getStats()->setAttribute(_frameStamp->getFrameNumber(), "Rendering traversals end time ", endRenderingTraversals); + getStats()->setAttribute(_frameStamp->getFrameNumber(), "Rendering traversals time taken", endRenderingTraversals-beginRenderingTraversals); + } } void CompositeViewer::getUsage(osg::ApplicationUsage& usage) const { - for(Views::const_iterator vitr = _views.begin(); + for(RefViews::const_iterator vitr = _views.begin(); vitr != _views.end(); ++vitr) { diff --git a/src/osgViewer/StatsHandler.cpp b/src/osgViewer/StatsHandler.cpp index f69c5479a..3a308fee2 100644 --- a/src/osgViewer/StatsHandler.cpp +++ b/src/osgViewer/StatsHandler.cpp @@ -42,10 +42,10 @@ StatsHandler::StatsHandler(): bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa) { - osgViewer::View* view = dynamic_cast(&aa); - if (!view) return false; + osgViewer::View* myview = dynamic_cast(&aa); + if (!myview) return false; - osgViewer::ViewerBase* viewer = view->getViewerBase(); + osgViewer::ViewerBase* viewer = myview->getViewerBase(); if (viewer && _threadingModelText.valid() && viewer->getThreadingModel()!=_threadingModel) { _threadingModel = viewer->getThreadingModel(); @@ -61,12 +61,12 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap { if (ea.getKey()==_keyEventTogglesOnScreenStats) { - if (view->getStats()) + if (viewer->getStats()) { if (!_initialized) { - setUpHUDCamera(view); - setUpScene(view); + setUpHUDCamera(viewer); + setUpScene(viewer); } ++_statsType; @@ -80,9 +80,9 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap { case(NO_STATS): { - view->getStats()->collectStats("frame_rate",false); - view->getStats()->collectStats("event",false); - view->getStats()->collectStats("update",false); + viewer->getStats()->collectStats("frame_rate",false); + viewer->getStats()->collectStats("event",false); + viewer->getStats()->collectStats("update",false); for(osgViewer::ViewerBase::Cameras::iterator itr = cameras.begin(); itr != cameras.end(); @@ -98,7 +98,7 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap } case(FRAME_RATE): { - view->getStats()->collectStats("frame_rate",true); + viewer->getStats()->collectStats("frame_rate",true); _camera->setNodeMask(0xffffffff); _switch->setValue(_frameRateChildNum, true); @@ -106,13 +106,22 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap } case(VIEWER_STATS): { - if (view->getDatabasePager() && view->getDatabasePager()->isRunning()) + ViewerBase::Scenes scenes; + viewer->getScenes(scenes); + for(ViewerBase::Scenes::iterator itr = scenes.begin(); + itr != scenes.end(); + ++itr) { - view->getDatabasePager()->resetStats(); + Scene* scene = *itr; + osgDB::DatabasePager* dp = scene->getDatabasePager(); + if (dp && dp->isRunning()) + { + dp->resetStats(); + } } - view->getStats()->collectStats("event",true); - view->getStats()->collectStats("update",true); + viewer->getStats()->collectStats("event",true); + viewer->getStats()->collectStats("update",true); for(osgViewer::ViewerBase::Cameras::iterator itr = cameras.begin(); itr != cameras.end(); @@ -144,12 +153,12 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap } if (ea.getKey()==_keyEventPrintsOutStats) { - if (view->getStats()) + if (viewer->getStats()) { osg::notify(osg::NOTICE)< StatsList; StatsList statsList; - statsList.push_back(view->getStats()); + statsList.push_back(viewer->getStats()); osgViewer::ViewerBase::Contexts contexts; viewer->getContexts(contexts); @@ -169,7 +178,7 @@ bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdap } } - for(int i = view->getStats()->getEarliestFrameNumber(); i<= view->getStats()->getLatestFrameNumber()-1; ++i) + for(int i = viewer->getStats()->getEarliestFrameNumber(); i<= viewer->getStats()->getLatestFrameNumber()-1; ++i) { for(StatsList::iterator itr = statsList.begin(); itr != statsList.end(); @@ -212,13 +221,12 @@ void StatsHandler::reset() _camera->setGraphicsContext(0); } -void StatsHandler::setUpHUDCamera(osgViewer::View* view) +void StatsHandler::setUpHUDCamera(osgViewer::ViewerBase* viewer) { osgViewer::GraphicsWindow* window = dynamic_cast(_camera->getGraphicsContext()); - osgViewer::ViewerBase* viewer = view->getViewerBase(); osg::GraphicsContext* context; - if (viewer && !window) + if (!window) { osgViewer::Viewer::Windows windows; viewer->getWindows(windows); @@ -230,10 +238,7 @@ void StatsHandler::setUpHUDCamera(osgViewer::View* view) context = window; } - else if (!viewer) - { - context = view->getCamera()->getGraphicsContext(); - } + _camera->setGraphicsContext(context); _camera->setViewport(0, 0, context->getTraits()->width, context->getTraits()->height); @@ -546,7 +551,7 @@ osg::Geometry* StatsHandler::createTick(const osg::Vec3& pos, float height, cons return geometry; } -void StatsHandler::setUpScene(osgViewer::View* view) +void StatsHandler::setUpScene(osgViewer::ViewerBase* viewer) { _switch = new osg::Switch; @@ -562,23 +567,23 @@ void StatsHandler::setUpScene(osgViewer::View* view) // collect all the relevant camers - typedef std::vector Cameras; - Cameras cameras; - if (view->getCamera()->getStats() && view->getCamera()->getGraphicsContext()) + ViewerBase::Cameras validCameras; + viewer->getCameras(validCameras); + + ViewerBase::Cameras cameras; + for(ViewerBase::Cameras::iterator itr = validCameras.begin(); + itr != validCameras.end(); + ++itr) { - cameras.push_back(view->getCamera()); - } - for(unsigned int si=0; sigetNumSlaves(); ++si) - { - if (view->getSlave(si)._camera->getStats() && view->getSlave(si)._camera->getGraphicsContext()) + if ((*itr)->getStats()) { - cameras.push_back(view->getSlave(si)._camera.get()); + cameras.push_back(*itr); } } // check for querry time support unsigned int numCamrasWithTimerQuerySupport = 0; - for(Cameras::iterator citr = cameras.begin(); + for(ViewerBase::Cameras::iterator citr = cameras.begin(); citr != cameras.end(); ++citr) { @@ -634,7 +639,7 @@ void StatsHandler::setUpScene(osgViewer::View* view) frameRateValue->setPosition(pos); frameRateValue->setText("0.0"); - frameRateValue->setDrawCallback(new TextDrawCallback(view->getStats(),"Frame rate",-1, true, 1.0)); + frameRateValue->setDrawCallback(new TextDrawCallback(viewer->getStats(),"Frame rate",-1, true, 1.0)); pos.y() -= characterSize*1.5f; @@ -693,11 +698,11 @@ void StatsHandler::setUpScene(osgViewer::View* view) eventValue->setPosition(pos); eventValue->setText("0.0"); - eventValue->setDrawCallback(new TextDrawCallback(view->getStats(),"Event traversal time taken",-1, false, 1000.0)); + eventValue->setDrawCallback(new TextDrawCallback(viewer->getStats(),"Event traversal time taken",-1, false, 1000.0)); pos.x() = startBlocks; osg::Geometry* geometry = createGeometry(pos, characterSize *0.8, colorUpdateAlpha, _numBlocks); - geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, view->getStats(), view->getStats(), "Event traversal begin time", "Event traversal end time", -1, _numBlocks)); + geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, viewer->getStats(), viewer->getStats(), "Event traversal begin time", "Event traversal end time", -1, _numBlocks)); geode->addDrawable(geometry); pos.y() -= characterSize*1.5f; @@ -726,11 +731,11 @@ void StatsHandler::setUpScene(osgViewer::View* view) updateValue->setPosition(pos); updateValue->setText("0.0"); - updateValue->setDrawCallback(new TextDrawCallback(view->getStats(),"Update traversal time taken",-1, false, 1000.0)); + updateValue->setDrawCallback(new TextDrawCallback(viewer->getStats(),"Update traversal time taken",-1, false, 1000.0)); pos.x() = startBlocks; osg::Geometry* geometry = createGeometry(pos, characterSize *0.8, colorUpdateAlpha, _numBlocks); - geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, view->getStats(), view->getStats(), "Update traversal begin time", "Update traversal end time", -1, _numBlocks)); + geometry->setDrawCallback(new BlockDrawCallback(this, startBlocks, viewer->getStats(), viewer->getStats(), "Update traversal begin time", "Update traversal end time", -1, _numBlocks)); geode->addDrawable(geometry); pos.y() -= characterSize*1.5f; @@ -740,11 +745,11 @@ void StatsHandler::setUpScene(osgViewer::View* view) // add camera stats - for(Cameras::iterator citr = cameras.begin(); + for(ViewerBase::Cameras::iterator citr = cameras.begin(); citr != cameras.end(); ++citr) { - group->addChild(createCameraStats(font, pos, startBlocks, aquireGPUStats, characterSize, view->getStats(), *citr)); + group->addChild(createCameraStats(font, pos, startBlocks, aquireGPUStats, characterSize, viewer->getStats(), *citr)); } @@ -763,91 +768,98 @@ void StatsHandler::setUpScene(osgViewer::View* view) geode->addDrawable(ticks); osg::Geometry* frameMarkers = createFrameMarkers(pos, height, colourTicks, _numBlocks + 1); - frameMarkers->setDrawCallback(new FrameMarkerDrawCallback(this, startBlocks, view->getStats(), 0, _numBlocks + 1)); + frameMarkers->setDrawCallback(new FrameMarkerDrawCallback(this, startBlocks, viewer->getStats(), 0, _numBlocks + 1)); geode->addDrawable(frameMarkers); } - osgDB::DatabasePager* dp = view->getDatabasePager(); - if (dp && dp->isRunning()) + ViewerBase::Scenes scenes; + viewer->getScenes(scenes); + for(ViewerBase::Scenes::iterator itr = scenes.begin(); + itr != scenes.end(); + ++itr) { - pos.y() -= characterSize*1.5f; - + Scene* scene = *itr; + osgDB::DatabasePager* dp = scene->getDatabasePager(); + if (dp && dp->isRunning()) + { + pos.y() -= characterSize*1.5f; + + pos.x() = leftPos; + + osg::ref_ptr averageLabel = new osgText::Text; + geode->addDrawable( averageLabel.get() ); + + averageLabel->setColor(colorDP); + averageLabel->setFont(font); + averageLabel->setCharacterSize(characterSize); + averageLabel->setPosition(pos); + averageLabel->setText("DatabasePager time to merge new tiles - average: "); + + pos.x() = averageLabel->getBound().xMax(); + + osg::ref_ptr averageValue = new osgText::Text; + geode->addDrawable( averageValue.get() ); + + averageValue->setColor(colorDP); + averageValue->setFont(font); + averageValue->setCharacterSize(characterSize); + averageValue->setPosition(pos); + averageValue->setText("1000"); + + pos.x() = averageValue->getBound().xMax() + 2.0f*characterSize; + + + osg::ref_ptr minLabel = new osgText::Text; + geode->addDrawable( minLabel.get() ); + + minLabel->setColor(colorDP); + minLabel->setFont(font); + minLabel->setCharacterSize(characterSize); + minLabel->setPosition(pos); + minLabel->setText("min: "); + + pos.x() = minLabel->getBound().xMax(); + + osg::ref_ptr minValue = new osgText::Text; + geode->addDrawable( minValue.get() ); + + minValue->setColor(colorDP); + minValue->setFont(font); + minValue->setCharacterSize(characterSize); + minValue->setPosition(pos); + minValue->setText("1000"); + + pos.x() = minValue->getBound().xMax() + 2.0f*characterSize; + + + osg::ref_ptr maxLabel = new osgText::Text; + geode->addDrawable( maxLabel.get() ); + + maxLabel->setColor(colorDP); + maxLabel->setFont(font); + maxLabel->setCharacterSize(characterSize); + maxLabel->setPosition(pos); + maxLabel->setText("max: "); + + pos.x() = maxLabel->getBound().xMax(); + + osg::ref_ptr maxValue = new osgText::Text; + geode->addDrawable( maxValue.get() ); + + maxValue->setColor(colorDP); + maxValue->setFont(font); + maxValue->setCharacterSize(characterSize); + maxValue->setPosition(pos); + maxValue->setText("1000"); + + pos.x() = maxLabel->getBound().xMax(); + + geode->setCullCallback(new PagerCallback(dp, minValue.get(), maxValue.get(), averageValue.get(), 1000.0)); + } + pos.x() = leftPos; - - osg::ref_ptr averageLabel = new osgText::Text; - geode->addDrawable( averageLabel.get() ); - - averageLabel->setColor(colorDP); - averageLabel->setFont(font); - averageLabel->setCharacterSize(characterSize); - averageLabel->setPosition(pos); - averageLabel->setText("DatabasePager time to merge new tiles - average: "); - - pos.x() = averageLabel->getBound().xMax(); - - osg::ref_ptr averageValue = new osgText::Text; - geode->addDrawable( averageValue.get() ); - - averageValue->setColor(colorDP); - averageValue->setFont(font); - averageValue->setCharacterSize(characterSize); - averageValue->setPosition(pos); - averageValue->setText("1000"); - - pos.x() = averageValue->getBound().xMax() + 2.0f*characterSize; - - - osg::ref_ptr minLabel = new osgText::Text; - geode->addDrawable( minLabel.get() ); - - minLabel->setColor(colorDP); - minLabel->setFont(font); - minLabel->setCharacterSize(characterSize); - minLabel->setPosition(pos); - minLabel->setText("min: "); - - pos.x() = minLabel->getBound().xMax(); - - osg::ref_ptr minValue = new osgText::Text; - geode->addDrawable( minValue.get() ); - - minValue->setColor(colorDP); - minValue->setFont(font); - minValue->setCharacterSize(characterSize); - minValue->setPosition(pos); - minValue->setText("1000"); - - pos.x() = minValue->getBound().xMax() + 2.0f*characterSize; - - - osg::ref_ptr maxLabel = new osgText::Text; - geode->addDrawable( maxLabel.get() ); - - maxLabel->setColor(colorDP); - maxLabel->setFont(font); - maxLabel->setCharacterSize(characterSize); - maxLabel->setPosition(pos); - maxLabel->setText("max: "); - - pos.x() = maxLabel->getBound().xMax(); - - osg::ref_ptr maxValue = new osgText::Text; - geode->addDrawable( maxValue.get() ); - - maxValue->setColor(colorDP); - maxValue->setFont(font); - maxValue->setCharacterSize(characterSize); - maxValue->setPosition(pos); - maxValue->setText("1000"); - - pos.x() = maxLabel->getBound().xMax(); - - geode->setCullCallback(new PagerCallback(dp, minValue.get(), maxValue.get(), averageValue.get(), 1000.0)); } - - pos.x() = leftPos; - } #if 0 // scene stats diff --git a/src/osgViewer/View.cpp b/src/osgViewer/View.cpp index 79d2637b6..ceaf848be 100644 --- a/src/osgViewer/View.cpp +++ b/src/osgViewer/View.cpp @@ -124,44 +124,6 @@ protected: }; -ViewerBase::ViewerBase(): - osg::Object(true) -{ - _done = false; - _keyEventSetsDone = osgGA::GUIEventAdapter::KEY_Escape; - _quitEventSetsDone = true; - _threadingModel = AutomaticSelection; - _threadsRunning = false; - -} - -ViewerBase::ViewerBase(const ViewerBase& base): - osg::Object(true) -{ -} - -void ViewerBase::addUpdateOperation(osg::Operation* operation) -{ - if (!operation) return; - - if (!_updateOperations) _updateOperations = new osg::OperationQueue; - - _updateOperations->add(operation); -} - -void ViewerBase::removeUpdateOperation(osg::Operation* operation) -{ - if (!operation) return; - - if (_updateOperations.valid()) - { - _updateOperations->remove(operation); - } -} - - - - View::View(): _fusionDistanceMode(osgUtil::SceneView::PROPORTIONAL_TO_SCREEN_DISTANCE), _fusionDistanceValue(1.0f) diff --git a/src/osgViewer/Viewer.cpp b/src/osgViewer/Viewer.cpp index 5a542f389..b849a8a4f 100644 --- a/src/osgViewer/Viewer.cpp +++ b/src/osgViewer/Viewer.cpp @@ -1408,7 +1408,6 @@ void Viewer::eventTraversal() getStats()->setAttribute(_frameStamp->getFrameNumber(), "Event traversal time taken", endEventTraversal-beginEventTraversal); } - } void Viewer::updateTraversal() @@ -1585,6 +1584,11 @@ void Viewer::getScenes(Scenes& scenes, bool onlyValid) scenes.push_back(_scene.get()); } +void Viewer::getViews(Views& views, bool onlyValid) +{ + views.push_back(this); +} + struct LessGraphicsContext { bool operator () (const osg::GraphicsContext* lhs, const osg::GraphicsContext* rhs) const diff --git a/src/osgViewer/ViewerBase.cpp b/src/osgViewer/ViewerBase.cpp new file mode 100644 index 000000000..6605cf12d --- /dev/null +++ b/src/osgViewer/ViewerBase.cpp @@ -0,0 +1,60 @@ +/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield + * + * This library is open source and may be redistributed and/or modified under + * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or + * (at your option) any later version. The full license is in LICENSE file + * included with this distribution, and on the openscenegraph.org website. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * OpenSceneGraph Public License for more details. +*/ + +#include + +#include + +#include +#include +#include + +#include +#include + +using namespace osgViewer; + +ViewerBase::ViewerBase(): + osg::Object(true) +{ + _done = false; + _keyEventSetsDone = osgGA::GUIEventAdapter::KEY_Escape; + _quitEventSetsDone = true; + _threadingModel = AutomaticSelection; + _threadsRunning = false; + +} + +ViewerBase::ViewerBase(const ViewerBase& base): + osg::Object(true) +{ +} + +void ViewerBase::addUpdateOperation(osg::Operation* operation) +{ + if (!operation) return; + + if (!_updateOperations) _updateOperations = new osg::OperationQueue; + + _updateOperations->add(operation); +} + +void ViewerBase::removeUpdateOperation(osg::Operation* operation) +{ + if (!operation) return; + + if (_updateOperations.valid()) + { + _updateOperations->remove(operation); + } +} diff --git a/src/osgWrappers/osg/View.cpp b/src/osgWrappers/osg/View.cpp index 4ee8fec62..4ae436b4f 100644 --- a/src/osgWrappers/osg/View.cpp +++ b/src/osgWrappers/osg/View.cpp @@ -16,7 +16,6 @@ #include #include #include -#include #include // Must undefine IN and OUT macros defined in Windows headers @@ -74,21 +73,6 @@ BEGIN_OBJECT_REFLECTOR(osg::View) __void__take__View_R1, "Take all the settings, Camera and Slaves from the passed in view, leaving it empty. ", ""); - I_Method1(void, setStats, IN, osg::Stats *, stats, - Properties::NON_VIRTUAL, - __void__setStats__osg_Stats_P1, - "Set the Stats object used for collect various frame related timing and scene graph stats. ", - ""); - I_Method0(osg::Stats *, getStats, - Properties::NON_VIRTUAL, - __osg_Stats_P1__getStats, - "Get the Stats object. ", - ""); - I_Method0(const osg::Stats *, getStats, - Properties::NON_VIRTUAL, - __C5_osg_Stats_P1__getStats, - "Get the const Stats object. ", - ""); I_Method1(void, setLightingMode, IN, osg::View::LightingMode, lightingMode, Properties::NON_VIRTUAL, __void__setLightingMode__LightingMode, @@ -201,9 +185,6 @@ BEGIN_OBJECT_REFLECTOR(osg::View) 0, 0, __bool__removeSlave__unsigned_int); - I_SimpleProperty(osg::Stats *, Stats, - __osg_Stats_P1__getStats, - __void__setStats__osg_Stats_P1); END_REFLECTOR BEGIN_VALUE_REFLECTOR(osg::View::Slave) diff --git a/src/osgWrappers/osgViewer/CompositeViewer.cpp b/src/osgWrappers/osgViewer/CompositeViewer.cpp index 02887f56a..5a934c05c 100644 --- a/src/osgWrappers/osgViewer/CompositeViewer.cpp +++ b/src/osgWrappers/osgViewer/CompositeViewer.cpp @@ -20,6 +20,7 @@ #include #include #include +#include // Must undefine IN and OUT macros defined in Windows headers #ifdef IN @@ -251,6 +252,11 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::CompositeViewer) __void__getScenes__Scenes_R1__bool, "", ""); + I_MethodWithDefaults2(void, getViews, IN, osgViewer::ViewerBase::Views &, views, , IN, bool, onlyValid, true, + Properties::VIRTUAL, + __void__getViews__Views_R1__bool, + "", + ""); I_Method0(void, setUpThreading, Properties::VIRTUAL, __void__setUpThreading, diff --git a/src/osgWrappers/osgViewer/View.cpp b/src/osgWrappers/osgViewer/View.cpp index 26dc2e464..368820a0d 100644 --- a/src/osgWrappers/osgViewer/View.cpp +++ b/src/osgWrappers/osgViewer/View.cpp @@ -10,7 +10,6 @@ #include #include -#include #include #include #include @@ -18,19 +17,17 @@ #include #include #include -#include #include #include #include #include -#include #include #include #include #include -#include #include #include +#include // Must undefine IN and OUT macros defined in Windows headers #ifdef IN @@ -368,271 +365,6 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::View) 0); END_REFLECTOR -TYPE_NAME_ALIAS(std::vector< osg::Camera * >, osgViewer::ViewerBase::Cameras) - -TYPE_NAME_ALIAS(std::vector< osg::GraphicsContext * >, osgViewer::ViewerBase::Contexts) - -TYPE_NAME_ALIAS(std::vector< osgViewer::GraphicsWindow * >, osgViewer::ViewerBase::Windows) - -TYPE_NAME_ALIAS(std::vector< OpenThreads::Thread * >, osgViewer::ViewerBase::Threads) - -TYPE_NAME_ALIAS(std::vector< osg::OperationThread * >, osgViewer::ViewerBase::OperationThreads) - -TYPE_NAME_ALIAS(std::vector< osgViewer::Scene * >, osgViewer::ViewerBase::Scenes) - -BEGIN_ENUM_REFLECTOR(osgViewer::ViewerBase::ThreadingModel) - I_DeclaringFile("osgViewer/View"); - I_EnumLabel(osgViewer::ViewerBase::SingleThreaded); - I_EnumLabel(osgViewer::ViewerBase::CullDrawThreadPerContext); - I_EnumLabel(osgViewer::ViewerBase::ThreadPerContext); - I_EnumLabel(osgViewer::ViewerBase::DrawThreadPerContext); - I_EnumLabel(osgViewer::ViewerBase::CullThreadPerCameraDrawThreadPerContext); - I_EnumLabel(osgViewer::ViewerBase::ThreadPerCamera); - I_EnumLabel(osgViewer::ViewerBase::AutomaticSelection); -END_REFLECTOR - -BEGIN_ABSTRACT_OBJECT_REFLECTOR(osgViewer::ViewerBase) - I_DeclaringFile("osgViewer/View"); - I_VirtualBaseType(osg::Object); - I_Constructor0(____ViewerBase, - "", - ""); - I_Constructor1(IN, const osgViewer::ViewerBase &, vb, - Properties::NON_EXPLICIT, - ____ViewerBase__C5_ViewerBase_R1, - "", - ""); - I_Method1(bool, readConfiguration, IN, const std::string &, filename, - Properties::PURE_VIRTUAL, - __bool__readConfiguration__C5_std_string_R1, - "read the viewer configuration from a configuration file. ", - ""); - I_Method0(bool, isRealized, - Properties::PURE_VIRTUAL, - __bool__isRealized, - "Get whether at least of one of this viewers windows are realized. ", - ""); - I_Method0(void, realize, - Properties::PURE_VIRTUAL, - __void__realize, - "set up windows and associated threads. ", - ""); - I_Method1(void, setThreadingModel, IN, osgViewer::ViewerBase::ThreadingModel, threadingModel, - Properties::PURE_VIRTUAL, - __void__setThreadingModel__ThreadingModel, - "Set the threading model the rendering traversals will use. ", - ""); - I_Method0(osgViewer::ViewerBase::ThreadingModel, getThreadingModel, - Properties::NON_VIRTUAL, - __ThreadingModel__getThreadingModel, - "Get the threading model the rendering traversals will use. ", - ""); - I_Method1(void, setDone, IN, bool, done, - Properties::NON_VIRTUAL, - __void__setDone__bool, - "Set the done flag to singnal the viewer's work is done and should exit the frame loop. ", - ""); - I_Method0(bool, done, - Properties::NON_VIRTUAL, - __bool__done, - "Reurn true if viewer's work is done and should exit the frame loop. ", - ""); - I_Method1(void, setEventVisitor, IN, osgGA::EventVisitor *, eventVisitor, - Properties::NON_VIRTUAL, - __void__setEventVisitor__osgGA_EventVisitor_P1, - "Set the EventVisitor. ", - ""); - I_Method0(osgGA::EventVisitor *, getEventVisitor, - Properties::NON_VIRTUAL, - __osgGA_EventVisitor_P1__getEventVisitor, - "Get the EventVisitor. ", - ""); - I_Method0(const osgGA::EventVisitor *, getEventVisitor, - Properties::NON_VIRTUAL, - __C5_osgGA_EventVisitor_P1__getEventVisitor, - "Get the const EventVisitor. ", - ""); - I_Method1(void, setKeyEventSetsDone, IN, int, key, - Properties::NON_VIRTUAL, - __void__setKeyEventSetsDone__int, - "Set the key event that the viewer checks on each frame to see if the viewer's done flag should be set to signal end of viewers main loop. ", - "Default value is Escape (osgGA::GUIEVentAdapter::KEY_Escape). Setting to 0 switches off the feature. "); - I_Method0(int, getKeyEventSetsDone, - Properties::NON_VIRTUAL, - __int__getKeyEventSetsDone, - "get the key event that the viewer checks on each frame to see if the viewer's done flag. ", - ""); - I_Method1(void, setQuitEventSetsDone, IN, bool, flag, - Properties::NON_VIRTUAL, - __void__setQuitEventSetsDone__bool, - "if the flag is true, the viewer set its done flag when a QUIT_APPLICATION is received, false disables this feature ", - ""); - I_Method0(bool, getQuitEventSetsDone, - Properties::NON_VIRTUAL, - __bool__getQuitEventSetsDone, - "", - "true if the viewer respond to the QUIT_APPLICATION-event "); - I_Method1(void, setUpdateVisitor, IN, osgUtil::UpdateVisitor *, updateVisitor, - Properties::NON_VIRTUAL, - __void__setUpdateVisitor__osgUtil_UpdateVisitor_P1, - "Set the UpdateVisitor. ", - ""); - I_Method0(osgUtil::UpdateVisitor *, getUpdateVisitor, - Properties::NON_VIRTUAL, - __osgUtil_UpdateVisitor_P1__getUpdateVisitor, - "Get the UpdateVisitor. ", - ""); - I_Method0(const osgUtil::UpdateVisitor *, getUpdateVisitor, - Properties::NON_VIRTUAL, - __C5_osgUtil_UpdateVisitor_P1__getUpdateVisitor, - "Get the const UpdateVisitor. ", - ""); - I_Method1(void, setUpdateOperations, IN, osg::OperationQueue *, operations, - Properties::NON_VIRTUAL, - __void__setUpdateOperations__osg_OperationQueue_P1, - "Set the Update OperationQueue. ", - ""); - I_Method0(osg::OperationQueue *, getUpdateOperations, - Properties::NON_VIRTUAL, - __osg_OperationQueue_P1__getUpdateOperations, - "Get the Update OperationQueue. ", - ""); - I_Method0(const osg::OperationQueue *, getUpdateOperations, - Properties::NON_VIRTUAL, - __C5_osg_OperationQueue_P1__getUpdateOperations, - "Get the const Update OperationQueue. ", - ""); - I_Method1(void, addUpdateOperation, IN, osg::Operation *, operation, - Properties::NON_VIRTUAL, - __void__addUpdateOperation__osg_Operation_P1, - "Add an update operation. ", - ""); - I_Method1(void, removeUpdateOperation, IN, osg::Operation *, operation, - Properties::NON_VIRTUAL, - __void__removeUpdateOperation__osg_Operation_P1, - "Remove an update operation. ", - ""); - I_Method0(int, run, - Properties::PURE_VIRTUAL, - __int__run, - "Execute a main frame loop. ", - "Equivialant to while (!viewer.done()) viewer.frame(); Also calls realize() if the viewer is not already realized, and installs trackball manipulator if one is not already assigned. "); - I_MethodWithDefaults1(void, frame, IN, double, simulationTime, USE_REFERENCE_TIME, - Properties::PURE_VIRTUAL, - __void__frame__double, - "Render a complete new frame. ", - "Calls advance(), eventTraversal(), updateTraversal(), renderingTraversals(). "); - I_MethodWithDefaults1(void, advance, IN, double, simulationTime, USE_REFERENCE_TIME, - Properties::PURE_VIRTUAL, - __void__advance__double, - "", - ""); - I_Method0(void, eventTraversal, - Properties::PURE_VIRTUAL, - __void__eventTraversal, - "", - ""); - I_Method0(void, updateTraversal, - Properties::PURE_VIRTUAL, - __void__updateTraversal, - "", - ""); - I_Method0(void, renderingTraversals, - Properties::PURE_VIRTUAL, - __void__renderingTraversals, - "", - ""); - I_MethodWithDefaults2(void, getCameras, IN, osgViewer::ViewerBase::Cameras &, cameras, , IN, bool, onlyActive, true, - Properties::PURE_VIRTUAL, - __void__getCameras__Cameras_R1__bool, - "", - ""); - I_MethodWithDefaults2(void, getContexts, IN, osgViewer::ViewerBase::Contexts &, contexts, , IN, bool, onlyValid, true, - Properties::PURE_VIRTUAL, - __void__getContexts__Contexts_R1__bool, - "", - ""); - I_MethodWithDefaults2(void, getWindows, IN, osgViewer::ViewerBase::Windows &, windows, , IN, bool, onlyValid, true, - Properties::PURE_VIRTUAL, - __void__getWindows__Windows_R1__bool, - "", - ""); - I_MethodWithDefaults2(void, getAllThreads, IN, osgViewer::ViewerBase::Threads &, threads, , IN, bool, onlyActive, true, - Properties::PURE_VIRTUAL, - __void__getAllThreads__Threads_R1__bool, - "", - ""); - I_MethodWithDefaults2(void, getOperationThreads, IN, osgViewer::ViewerBase::OperationThreads &, threads, , IN, bool, onlyActive, true, - Properties::PURE_VIRTUAL, - __void__getOperationThreads__OperationThreads_R1__bool, - "", - ""); - I_MethodWithDefaults2(void, getScenes, IN, osgViewer::ViewerBase::Scenes &, scenes, , IN, bool, onlyValid, true, - Properties::PURE_VIRTUAL, - __void__getScenes__Scenes_R1__bool, - "", - ""); - I_Method1(void, setRealizeOperation, IN, osg::Operation *, op, - Properties::NON_VIRTUAL, - __void__setRealizeOperation__osg_Operation_P1, - "Set the graphics operation to call on realization of the viewers graphics windows. ", - ""); - I_Method0(osg::Operation *, getRealizeOperation, - Properties::NON_VIRTUAL, - __osg_Operation_P1__getRealizeOperation, - "Get the graphics operation to call on realization of the viewers graphics windows. ", - ""); - I_Method0(void, setUpThreading, - Properties::PURE_VIRTUAL, - __void__setUpThreading, - "Set up the threading and processor affinity as per the viewers threading model. ", - ""); - I_Method0(bool, areThreadsRunning, - Properties::NON_VIRTUAL, - __bool__areThreadsRunning, - "Return true if viewer threads are running. ", - ""); - I_Method0(void, stopThreading, - Properties::PURE_VIRTUAL, - __void__stopThreading, - "Stop any threads begin run by viewer. ", - ""); - I_Method0(void, startThreading, - Properties::PURE_VIRTUAL, - __void__startThreading, - "Start any threads required by the viewer. ", - ""); - I_Method1(void, getUsage, IN, osg::ApplicationUsage &, usage, - Properties::PURE_VIRTUAL, - __void__getUsage__osg_ApplicationUsage_R1, - "Get the keyboard and mouse usage of this viewer. ", - ""); - I_SimpleProperty(bool, Done, - 0, - __void__setDone__bool); - I_SimpleProperty(osgGA::EventVisitor *, EventVisitor, - __osgGA_EventVisitor_P1__getEventVisitor, - __void__setEventVisitor__osgGA_EventVisitor_P1); - I_SimpleProperty(int, KeyEventSetsDone, - __int__getKeyEventSetsDone, - __void__setKeyEventSetsDone__int); - I_SimpleProperty(bool, QuitEventSetsDone, - __bool__getQuitEventSetsDone, - __void__setQuitEventSetsDone__bool); - I_SimpleProperty(osg::Operation *, RealizeOperation, - __osg_Operation_P1__getRealizeOperation, - __void__setRealizeOperation__osg_Operation_P1); - I_SimpleProperty(osgViewer::ViewerBase::ThreadingModel, ThreadingModel, - __ThreadingModel__getThreadingModel, - __void__setThreadingModel__ThreadingModel); - I_SimpleProperty(osg::OperationQueue *, UpdateOperations, - __osg_OperationQueue_P1__getUpdateOperations, - __void__setUpdateOperations__osg_OperationQueue_P1); - I_SimpleProperty(osgUtil::UpdateVisitor *, UpdateVisitor, - __osgUtil_UpdateVisitor_P1__getUpdateVisitor, - __void__setUpdateVisitor__osgUtil_UpdateVisitor_P1); -END_REFLECTOR - BEGIN_VALUE_REFLECTOR(osg::ref_ptr< osgGA::GUIEventHandler >) I_DeclaringFile("osg/ref_ptr"); I_Constructor0(____ref_ptr, @@ -675,13 +407,3 @@ END_REFLECTOR STD_LIST_REFLECTOR(std::list< osg::ref_ptr< osgGA::GUIEventHandler > >) -STD_VECTOR_REFLECTOR(std::vector< OpenThreads::Thread * >) - -STD_VECTOR_REFLECTOR(std::vector< osg::Camera * >) - -STD_VECTOR_REFLECTOR(std::vector< osg::OperationThread * >) - -STD_VECTOR_REFLECTOR(std::vector< osgViewer::GraphicsWindow * >) - -STD_VECTOR_REFLECTOR(std::vector< osgViewer::Scene * >) - diff --git a/src/osgWrappers/osgViewer/Viewer.cpp b/src/osgWrappers/osgViewer/Viewer.cpp index 03ff2ebe4..80a2e373a 100644 --- a/src/osgWrappers/osgViewer/Viewer.cpp +++ b/src/osgWrappers/osgViewer/Viewer.cpp @@ -20,6 +20,7 @@ #include #include #include +#include // Must undefine IN and OUT macros defined in Windows headers #ifdef IN @@ -211,6 +212,11 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::Viewer) __void__getScenes__Scenes_R1__bool, "", ""); + I_MethodWithDefaults2(void, getViews, IN, osgViewer::ViewerBase::Views &, views, , IN, bool, onlyValid, true, + Properties::VIRTUAL, + __void__getViews__Views_R1__bool, + "", + ""); I_Method0(void, setUpThreading, Properties::VIRTUAL, __void__setUpThreading, diff --git a/src/osgWrappers/osgViewer/ViewerBase.cpp b/src/osgWrappers/osgViewer/ViewerBase.cpp new file mode 100644 index 000000000..d882fdff0 --- /dev/null +++ b/src/osgWrappers/osgViewer/ViewerBase.cpp @@ -0,0 +1,329 @@ +// *************************************************************************** +// +// Generated automatically by genwrapper. +// Please DO NOT EDIT this file! +// +// *************************************************************************** + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +// Must undefine IN and OUT macros defined in Windows headers +#ifdef IN +#undef IN +#endif +#ifdef OUT +#undef OUT +#endif + +TYPE_NAME_ALIAS(std::vector< osg::Camera * >, osgViewer::ViewerBase::Cameras) + +TYPE_NAME_ALIAS(std::vector< osg::GraphicsContext * >, osgViewer::ViewerBase::Contexts) + +TYPE_NAME_ALIAS(std::vector< osgViewer::GraphicsWindow * >, osgViewer::ViewerBase::Windows) + +TYPE_NAME_ALIAS(std::vector< OpenThreads::Thread * >, osgViewer::ViewerBase::Threads) + +TYPE_NAME_ALIAS(std::vector< osg::OperationThread * >, osgViewer::ViewerBase::OperationThreads) + +TYPE_NAME_ALIAS(std::vector< osgViewer::Scene * >, osgViewer::ViewerBase::Scenes) + +TYPE_NAME_ALIAS(std::vector< osgViewer::View * >, osgViewer::ViewerBase::Views) + +BEGIN_ENUM_REFLECTOR(osgViewer::ViewerBase::ThreadingModel) + I_DeclaringFile("osgViewer/ViewerBase"); + I_EnumLabel(osgViewer::ViewerBase::SingleThreaded); + I_EnumLabel(osgViewer::ViewerBase::CullDrawThreadPerContext); + I_EnumLabel(osgViewer::ViewerBase::ThreadPerContext); + I_EnumLabel(osgViewer::ViewerBase::DrawThreadPerContext); + I_EnumLabel(osgViewer::ViewerBase::CullThreadPerCameraDrawThreadPerContext); + I_EnumLabel(osgViewer::ViewerBase::ThreadPerCamera); + I_EnumLabel(osgViewer::ViewerBase::AutomaticSelection); +END_REFLECTOR + +BEGIN_ABSTRACT_OBJECT_REFLECTOR(osgViewer::ViewerBase) + I_DeclaringFile("osgViewer/ViewerBase"); + I_VirtualBaseType(osg::Object); + I_Constructor0(____ViewerBase, + "", + ""); + I_Constructor1(IN, const osgViewer::ViewerBase &, vb, + Properties::NON_EXPLICIT, + ____ViewerBase__C5_ViewerBase_R1, + "", + ""); + I_Method1(void, setStats, IN, osg::Stats *, stats, + Properties::NON_VIRTUAL, + __void__setStats__osg_Stats_P1, + "Set the Stats object used for collect various frame related timing and scene graph stats. ", + ""); + I_Method0(osg::Stats *, getStats, + Properties::NON_VIRTUAL, + __osg_Stats_P1__getStats, + "Get the Viewers Stats object. ", + ""); + I_Method0(const osg::Stats *, getStats, + Properties::NON_VIRTUAL, + __C5_osg_Stats_P1__getStats, + "Get the Viewers Stats object. ", + ""); + I_Method1(bool, readConfiguration, IN, const std::string &, filename, + Properties::PURE_VIRTUAL, + __bool__readConfiguration__C5_std_string_R1, + "read the viewer configuration from a configuration file. ", + ""); + I_Method0(bool, isRealized, + Properties::PURE_VIRTUAL, + __bool__isRealized, + "Get whether at least of one of this viewers windows are realized. ", + ""); + I_Method0(void, realize, + Properties::PURE_VIRTUAL, + __void__realize, + "set up windows and associated threads. ", + ""); + I_Method1(void, setThreadingModel, IN, osgViewer::ViewerBase::ThreadingModel, threadingModel, + Properties::PURE_VIRTUAL, + __void__setThreadingModel__ThreadingModel, + "Set the threading model the rendering traversals will use. ", + ""); + I_Method0(osgViewer::ViewerBase::ThreadingModel, getThreadingModel, + Properties::NON_VIRTUAL, + __ThreadingModel__getThreadingModel, + "Get the threading model the rendering traversals will use. ", + ""); + I_Method1(void, setDone, IN, bool, done, + Properties::NON_VIRTUAL, + __void__setDone__bool, + "Set the done flag to singnal the viewer's work is done and should exit the frame loop. ", + ""); + I_Method0(bool, done, + Properties::NON_VIRTUAL, + __bool__done, + "Reurn true if viewer's work is done and should exit the frame loop. ", + ""); + I_Method1(void, setEventVisitor, IN, osgGA::EventVisitor *, eventVisitor, + Properties::NON_VIRTUAL, + __void__setEventVisitor__osgGA_EventVisitor_P1, + "Set the EventVisitor. ", + ""); + I_Method0(osgGA::EventVisitor *, getEventVisitor, + Properties::NON_VIRTUAL, + __osgGA_EventVisitor_P1__getEventVisitor, + "Get the EventVisitor. ", + ""); + I_Method0(const osgGA::EventVisitor *, getEventVisitor, + Properties::NON_VIRTUAL, + __C5_osgGA_EventVisitor_P1__getEventVisitor, + "Get the const EventVisitor. ", + ""); + I_Method1(void, setKeyEventSetsDone, IN, int, key, + Properties::NON_VIRTUAL, + __void__setKeyEventSetsDone__int, + "Set the key event that the viewer checks on each frame to see if the viewer's done flag should be set to signal end of viewers main loop. ", + "Default value is Escape (osgGA::GUIEVentAdapter::KEY_Escape). Setting to 0 switches off the feature. "); + I_Method0(int, getKeyEventSetsDone, + Properties::NON_VIRTUAL, + __int__getKeyEventSetsDone, + "get the key event that the viewer checks on each frame to see if the viewer's done flag. ", + ""); + I_Method1(void, setQuitEventSetsDone, IN, bool, flag, + Properties::NON_VIRTUAL, + __void__setQuitEventSetsDone__bool, + "if the flag is true, the viewer set its done flag when a QUIT_APPLICATION is received, false disables this feature ", + ""); + I_Method0(bool, getQuitEventSetsDone, + Properties::NON_VIRTUAL, + __bool__getQuitEventSetsDone, + "", + "true if the viewer respond to the QUIT_APPLICATION-event "); + I_Method1(void, setUpdateVisitor, IN, osgUtil::UpdateVisitor *, updateVisitor, + Properties::NON_VIRTUAL, + __void__setUpdateVisitor__osgUtil_UpdateVisitor_P1, + "Set the UpdateVisitor. ", + ""); + I_Method0(osgUtil::UpdateVisitor *, getUpdateVisitor, + Properties::NON_VIRTUAL, + __osgUtil_UpdateVisitor_P1__getUpdateVisitor, + "Get the UpdateVisitor. ", + ""); + I_Method0(const osgUtil::UpdateVisitor *, getUpdateVisitor, + Properties::NON_VIRTUAL, + __C5_osgUtil_UpdateVisitor_P1__getUpdateVisitor, + "Get the const UpdateVisitor. ", + ""); + I_Method1(void, setUpdateOperations, IN, osg::OperationQueue *, operations, + Properties::NON_VIRTUAL, + __void__setUpdateOperations__osg_OperationQueue_P1, + "Set the Update OperationQueue. ", + ""); + I_Method0(osg::OperationQueue *, getUpdateOperations, + Properties::NON_VIRTUAL, + __osg_OperationQueue_P1__getUpdateOperations, + "Get the Update OperationQueue. ", + ""); + I_Method0(const osg::OperationQueue *, getUpdateOperations, + Properties::NON_VIRTUAL, + __C5_osg_OperationQueue_P1__getUpdateOperations, + "Get the const Update OperationQueue. ", + ""); + I_Method1(void, addUpdateOperation, IN, osg::Operation *, operation, + Properties::NON_VIRTUAL, + __void__addUpdateOperation__osg_Operation_P1, + "Add an update operation. ", + ""); + I_Method1(void, removeUpdateOperation, IN, osg::Operation *, operation, + Properties::NON_VIRTUAL, + __void__removeUpdateOperation__osg_Operation_P1, + "Remove an update operation. ", + ""); + I_Method0(int, run, + Properties::PURE_VIRTUAL, + __int__run, + "Execute a main frame loop. ", + "Equivialant to while (!viewer.done()) viewer.frame(); Also calls realize() if the viewer is not already realized, and installs trackball manipulator if one is not already assigned. "); + I_MethodWithDefaults1(void, frame, IN, double, simulationTime, USE_REFERENCE_TIME, + Properties::PURE_VIRTUAL, + __void__frame__double, + "Render a complete new frame. ", + "Calls advance(), eventTraversal(), updateTraversal(), renderingTraversals(). "); + I_MethodWithDefaults1(void, advance, IN, double, simulationTime, USE_REFERENCE_TIME, + Properties::PURE_VIRTUAL, + __void__advance__double, + "", + ""); + I_Method0(void, eventTraversal, + Properties::PURE_VIRTUAL, + __void__eventTraversal, + "", + ""); + I_Method0(void, updateTraversal, + Properties::PURE_VIRTUAL, + __void__updateTraversal, + "", + ""); + I_Method0(void, renderingTraversals, + Properties::PURE_VIRTUAL, + __void__renderingTraversals, + "", + ""); + I_MethodWithDefaults2(void, getCameras, IN, osgViewer::ViewerBase::Cameras &, cameras, , IN, bool, onlyActive, true, + Properties::PURE_VIRTUAL, + __void__getCameras__Cameras_R1__bool, + "", + ""); + I_MethodWithDefaults2(void, getContexts, IN, osgViewer::ViewerBase::Contexts &, contexts, , IN, bool, onlyValid, true, + Properties::PURE_VIRTUAL, + __void__getContexts__Contexts_R1__bool, + "", + ""); + I_MethodWithDefaults2(void, getWindows, IN, osgViewer::ViewerBase::Windows &, windows, , IN, bool, onlyValid, true, + Properties::PURE_VIRTUAL, + __void__getWindows__Windows_R1__bool, + "", + ""); + I_MethodWithDefaults2(void, getAllThreads, IN, osgViewer::ViewerBase::Threads &, threads, , IN, bool, onlyActive, true, + Properties::PURE_VIRTUAL, + __void__getAllThreads__Threads_R1__bool, + "", + ""); + I_MethodWithDefaults2(void, getOperationThreads, IN, osgViewer::ViewerBase::OperationThreads &, threads, , IN, bool, onlyActive, true, + Properties::PURE_VIRTUAL, + __void__getOperationThreads__OperationThreads_R1__bool, + "", + ""); + I_MethodWithDefaults2(void, getScenes, IN, osgViewer::ViewerBase::Scenes &, scenes, , IN, bool, onlyValid, true, + Properties::PURE_VIRTUAL, + __void__getScenes__Scenes_R1__bool, + "", + ""); + I_MethodWithDefaults2(void, getViews, IN, osgViewer::ViewerBase::Views &, views, , IN, bool, onlyValid, true, + Properties::PURE_VIRTUAL, + __void__getViews__Views_R1__bool, + "", + ""); + I_Method1(void, setRealizeOperation, IN, osg::Operation *, op, + Properties::NON_VIRTUAL, + __void__setRealizeOperation__osg_Operation_P1, + "Set the graphics operation to call on realization of the viewers graphics windows. ", + ""); + I_Method0(osg::Operation *, getRealizeOperation, + Properties::NON_VIRTUAL, + __osg_Operation_P1__getRealizeOperation, + "Get the graphics operation to call on realization of the viewers graphics windows. ", + ""); + I_Method0(void, setUpThreading, + Properties::PURE_VIRTUAL, + __void__setUpThreading, + "Set up the threading and processor affinity as per the viewers threading model. ", + ""); + I_Method0(bool, areThreadsRunning, + Properties::NON_VIRTUAL, + __bool__areThreadsRunning, + "Return true if viewer threads are running. ", + ""); + I_Method0(void, stopThreading, + Properties::PURE_VIRTUAL, + __void__stopThreading, + "Stop any threads begin run by viewer. ", + ""); + I_Method0(void, startThreading, + Properties::PURE_VIRTUAL, + __void__startThreading, + "Start any threads required by the viewer. ", + ""); + I_Method1(void, getUsage, IN, osg::ApplicationUsage &, usage, + Properties::PURE_VIRTUAL, + __void__getUsage__osg_ApplicationUsage_R1, + "Get the keyboard and mouse usage of this viewer. ", + ""); + I_SimpleProperty(bool, Done, + 0, + __void__setDone__bool); + I_SimpleProperty(osgGA::EventVisitor *, EventVisitor, + __osgGA_EventVisitor_P1__getEventVisitor, + __void__setEventVisitor__osgGA_EventVisitor_P1); + I_SimpleProperty(int, KeyEventSetsDone, + __int__getKeyEventSetsDone, + __void__setKeyEventSetsDone__int); + I_SimpleProperty(bool, QuitEventSetsDone, + __bool__getQuitEventSetsDone, + __void__setQuitEventSetsDone__bool); + I_SimpleProperty(osg::Operation *, RealizeOperation, + __osg_Operation_P1__getRealizeOperation, + __void__setRealizeOperation__osg_Operation_P1); + I_SimpleProperty(osg::Stats *, Stats, + __osg_Stats_P1__getStats, + __void__setStats__osg_Stats_P1); + I_SimpleProperty(osgViewer::ViewerBase::ThreadingModel, ThreadingModel, + __ThreadingModel__getThreadingModel, + __void__setThreadingModel__ThreadingModel); + I_SimpleProperty(osg::OperationQueue *, UpdateOperations, + __osg_OperationQueue_P1__getUpdateOperations, + __void__setUpdateOperations__osg_OperationQueue_P1); + I_SimpleProperty(osgUtil::UpdateVisitor *, UpdateVisitor, + __osgUtil_UpdateVisitor_P1__getUpdateVisitor, + __void__setUpdateVisitor__osgUtil_UpdateVisitor_P1); +END_REFLECTOR + +STD_VECTOR_REFLECTOR(std::vector< OpenThreads::Thread * >) + +STD_VECTOR_REFLECTOR(std::vector< osg::Camera * >) + +STD_VECTOR_REFLECTOR(std::vector< osg::OperationThread * >) + +STD_VECTOR_REFLECTOR(std::vector< osgViewer::GraphicsWindow * >) + +STD_VECTOR_REFLECTOR(std::vector< osgViewer::Scene * >) + +STD_VECTOR_REFLECTOR(std::vector< osgViewer::View * >) + diff --git a/src/osgWrappers/osgViewer/ViewerEventHandlers.cpp b/src/osgWrappers/osgViewer/ViewerEventHandlers.cpp index 58e3adc9d..2ab09da54 100644 --- a/src/osgWrappers/osgViewer/ViewerEventHandlers.cpp +++ b/src/osgWrappers/osgViewer/ViewerEventHandlers.cpp @@ -215,10 +215,10 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::StatsHandler) __void__getUsage__osg_ApplicationUsage_R1, "Get the keyboard and mouse usage of this manipulator. ", ""); - I_ProtectedMethod1(void, setUpHUDCamera, IN, osgViewer::View *, view, + I_ProtectedMethod1(void, setUpHUDCamera, IN, osgViewer::ViewerBase *, viewer, Properties::NON_VIRTUAL, Properties::NON_CONST, - __void__setUpHUDCamera__osgViewer_View_P1, + __void__setUpHUDCamera__osgViewer_ViewerBase_P1, "", ""); I_ProtectedMethod4(osg::Geometry *, createGeometry, IN, const osg::Vec3 &, pos, IN, float, height, IN, const osg::Vec4 &, colour, IN, unsigned int, numBlocks, @@ -245,10 +245,10 @@ BEGIN_OBJECT_REFLECTOR(osgViewer::StatsHandler) __osg_Node_P1__createCameraStats__C5_std_string_R1__osg_Vec3_R1__float__bool__float__osg_Stats_P1__osg_Camera_P1, "", ""); - I_ProtectedMethod1(void, setUpScene, IN, osgViewer::View *, view, + I_ProtectedMethod1(void, setUpScene, IN, osgViewer::ViewerBase *, viewer, Properties::NON_VIRTUAL, Properties::NON_CONST, - __void__setUpScene__osgViewer_View_P1, + __void__setUpScene__osgViewer_ViewerBase_P1, "", ""); I_ProtectedMethod0(void, updateThreadingModelText,