Added Viewer::setKeySetsDone(int) to allow developers to specify which

key should set done and cause the main loop to exit.
This commit is contained in:
Robert Osfield
2007-01-04 21:28:16 +00:00
parent abdb1741a4
commit 1fd2047cf5
2 changed files with 27 additions and 11 deletions

View File

@@ -25,6 +25,7 @@ using namespace osgViewer;
Viewer::Viewer():
_firstFrame(true),
_done(false),
_keySetsDone(osgGA::GUIEventAdapter::KEY_Escape),
_threadingModel(ThreadPerContext),
_numThreadsOnBarrier(0)
{
@@ -601,21 +602,25 @@ void Viewer::frameEventTraversal()
#endif
// osg::notify(osg::NOTICE)<<"Events "<<events.size()<<std::endl;
for(osgGA::EventQueue::Events::iterator itr = events.begin();
itr != events.end();
++itr)
if (_keySetsDone!=0)
{
osgGA::GUIEventAdapter* event = itr->get();
switch(event->getEventType())
for(osgGA::EventQueue::Events::iterator itr = events.begin();
itr != events.end();
++itr)
{
case(osgGA::GUIEventAdapter::KEYUP):
if (event->getKey()==osgGA::GUIEventAdapter::KEY_Escape) _done = true;
break;
default:
break;
osgGA::GUIEventAdapter* event = itr->get();
switch(event->getEventType())
{
case(osgGA::GUIEventAdapter::KEYUP):
if (event->getKey()==_keySetsDone) _done = true;
break;
default:
break;
}
}
}
if (_done) return;
for(osgGA::EventQueue::Events::iterator itr = events.begin();