Moved ViewerBase class out into its own header and source file.

Improved the support for stats collection in CompositeViewer/StatsHandler.
This commit is contained in:
Robert Osfield
2007-09-30 11:37:00 +00:00
parent f8729af8b2
commit 91900254f0
18 changed files with 835 additions and 705 deletions

View File

@@ -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<osg::Stats> _stats;
LightingMode _lightingMode;
osg::ref_ptr<osg::Light> _light;

View File

@@ -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<osgViewer::View> > Views;
Views _views;
typedef std::vector< osg::ref_ptr<osgViewer::View> > RefViews;
RefViews _views;
bool _firstFrame;

View File

@@ -26,182 +26,10 @@
#include <osgGA/EventQueue>
#include <osgViewer/Scene>
#include <osgViewer/GraphicsWindow>
#include <osgViewer/ViewerBase>
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<osg::Camera*> Cameras;
virtual void getCameras(Cameras& cameras, bool onlyActive=true) = 0;
typedef std::vector<osg::GraphicsContext*> Contexts;
virtual void getContexts(Contexts& contexts, bool onlyValid=true) = 0;
typedef std::vector<osgViewer::GraphicsWindow*> Windows;
virtual void getWindows(Windows& windows, bool onlyValid=true) = 0;
typedef std::vector<OpenThreads::Thread*> Threads;
virtual void getAllThreads(Threads& threads, bool onlyActive=true) = 0;
typedef std::vector<osg::OperationThread*> OperationThreads;
virtual void getOperationThreads(OperationThreads& threads, bool onlyActive=true) = 0;
typedef std::vector<osgViewer::Scene*> 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<osgGA::EventVisitor> _eventVisitor;
osg::ref_ptr<osg::OperationQueue> _updateOperations;
osg::ref_ptr<osgUtil::UpdateVisitor> _updateVisitor;
osg::ref_ptr<osg::Operation> _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
{

View File

@@ -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<osg::BarrierOperation> _startRenderingBarrier;

View File

@@ -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 <osg/Stats>
#include <osgUtil/UpdateVisitor>
#include <osgGA/MatrixManipulator>
#include <osgGA/EventVisitor>
#include <osgGA/EventQueue>
#include <osgViewer/Scene>
#include <osgViewer/GraphicsWindow>
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<osg::Camera*> Cameras;
virtual void getCameras(Cameras& cameras, bool onlyActive=true) = 0;
typedef std::vector<osg::GraphicsContext*> Contexts;
virtual void getContexts(Contexts& contexts, bool onlyValid=true) = 0;
typedef std::vector<osgViewer::GraphicsWindow*> Windows;
virtual void getWindows(Windows& windows, bool onlyValid=true) = 0;
typedef std::vector<OpenThreads::Thread*> Threads;
virtual void getAllThreads(Threads& threads, bool onlyActive=true) = 0;
typedef std::vector<osg::OperationThread*> OperationThreads;
virtual void getOperationThreads(OperationThreads& threads, bool onlyActive=true) = 0;
typedef std::vector<osgViewer::Scene*> Scenes;
virtual void getScenes(Scenes& scenes, bool onlyValid=true) = 0;
typedef std::vector<osgViewer::View*> 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<osg::Stats> _stats;
bool _done;
int _keyEventSetsDone;
bool _quitEventSetsDone;
ThreadingModel _threadingModel;
bool _threadsRunning;
osg::ref_ptr<osgGA::EventVisitor> _eventVisitor;
osg::ref_ptr<osg::OperationQueue> _updateOperations;
osg::ref_ptr<osgUtil::UpdateVisitor> _updateVisitor;
osg::ref_ptr<osg::Operation> _realizeOperation;
};
}
#endif

View File

@@ -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();

View File

@@ -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
)

View File

@@ -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()"<<std::endl;
for(Views::iterator itr = _views.begin();
for(RefViews::iterator itr = _views.begin();
itr != _views.end();
++itr)
{
@@ -475,7 +474,7 @@ void CompositeViewer::getContexts(Contexts& contexts, bool onlyValid)
typedef std::set<osg::GraphicsContext*> 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<osgViewer::Scene*> 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 = "<<eventState->getXmin()<<" Ymin="<<eventState->getYmin()<<" xMax="<<eventState->getXmax()<<" Ymax="<<eventState->getYmax()<<std::endl;
for(Views::iterator vitr = _views.begin();
for(RefViews::iterator vitr = _views.begin();
vitr != _views.end();
++vitr)
{
@@ -1140,22 +1143,15 @@ void CompositeViewer::eventTraversal()
}
// stats:
for(Views::iterator vitr = _views.begin();
vitr != _views.end();
++vitr)
{
if ((*vitr)->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)
{

View File

@@ -42,10 +42,10 @@ StatsHandler::StatsHandler():
bool StatsHandler::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa)
{
osgViewer::View* view = dynamic_cast<osgViewer::View*>(&aa);
if (!view) return false;
osgViewer::View* myview = dynamic_cast<osgViewer::View*>(&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)<<std::endl<<"Stats report:"<<std::endl;
typedef std::vector<osg::Stats*> 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<osgViewer::GraphicsWindow*>(_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<osg::Camera*> 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; si<view->getNumSlaves(); ++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<osgText::Text> 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<osgText::Text> 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<osgText::Text> 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<osgText::Text> 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<osgText::Text> 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<osgText::Text> 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<osgText::Text> 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<osgText::Text> 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<osgText::Text> 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<osgText::Text> 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<osgText::Text> 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<osgText::Text> 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

View File

@@ -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)

View File

@@ -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

View File

@@ -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 <osgViewer/ViewerBase>
#include <osg/io_utils>
#include <osg/TextureCubeMap>
#include <osg/TextureRectangle>
#include <osg/TexMat>
#include <osgUtil/Optimizer>
#include <osgUtil/IntersectionVisitor>
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);
}
}

View File

@@ -16,7 +16,6 @@
#include <osg/Matrix>
#include <osg/Matrixd>
#include <osg/Object>
#include <osg/Stats>
#include <osg/View>
// 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)

View File

@@ -20,6 +20,7 @@
#include <osgGA/EventQueue>
#include <osgViewer/CompositeViewer>
#include <osgViewer/View>
#include <osgViewer/ViewerBase>
// 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,

View File

@@ -10,7 +10,6 @@
#include <osgIntrospection/StaticMethodInfo>
#include <osgIntrospection/Attributes>
#include <osg/ApplicationUsage>
#include <osg/Camera>
#include <osg/CopyOp>
#include <osg/DisplaySettings>
@@ -18,19 +17,17 @@
#include <osg/Image>
#include <osg/Node>
#include <osg/Object>
#include <osg/OperationThread>
#include <osg/Timer>
#include <osg/View>
#include <osgDB/DatabasePager>
#include <osgGA/EventQueue>
#include <osgGA/EventVisitor>
#include <osgGA/GUIEventHandler>
#include <osgGA/MatrixManipulator>
#include <osgUtil/LineSegmentIntersector>
#include <osgUtil/SceneView>
#include <osgUtil/UpdateVisitor>
#include <osgViewer/Scene>
#include <osgViewer/View>
#include <osgViewer/ViewerBase>
// 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 * >)

View File

@@ -20,6 +20,7 @@
#include <osgViewer/GraphicsWindow>
#include <osgViewer/View>
#include <osgViewer/Viewer>
#include <osgViewer/ViewerBase>
// 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,

View File

@@ -0,0 +1,329 @@
// ***************************************************************************
//
// Generated automatically by genwrapper.
// Please DO NOT EDIT this file!
//
// ***************************************************************************
#include <osgIntrospection/ReflectionMacros>
#include <osgIntrospection/TypedMethodInfo>
#include <osgIntrospection/StaticMethodInfo>
#include <osgIntrospection/Attributes>
#include <osg/ApplicationUsage>
#include <osg/OperationThread>
#include <osg/Stats>
#include <osgGA/EventVisitor>
#include <osgUtil/UpdateVisitor>
#include <osgViewer/ViewerBase>
// 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 * >)

View File

@@ -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,