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

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