Improved the handling of setStartTick() being called mid app, such as when idirectly called when doing a Viewer::setSceneData().

Improved the setting the the initial event state.
This commit is contained in:
Robert Osfield
2011-11-04 12:47:24 +00:00
parent 0329ca5cea
commit e8bae33143
3 changed files with 36 additions and 5 deletions

View File

@@ -562,6 +562,16 @@ void Viewer::realize()
}
}
osgGA::GUIEventAdapter* eventState = getEventQueue()->getCurrentEventState();
if (getCamera()->getViewport())
{
osg::Viewport* viewport = getCamera()->getViewport();
eventState->setInputRange( viewport->x(), viewport->y(), viewport->x() + viewport->width(), viewport->y() + viewport->height());
}
else
{
eventState->setInputRange(-1.0, -1.0, 1.0, 1.0);
}
}
@@ -588,6 +598,17 @@ void Viewer::advance(double simulationTime)
if (_eventQueue.valid())
{
osgGA::GUIEventAdapter* eventState = getEventQueue()->getCurrentEventState();
if (getCamera()->getViewport())
{
osg::Viewport* viewport = getCamera()->getViewport();
eventState->setInputRange( viewport->x(), viewport->y(), viewport->x() + viewport->width(), viewport->y() + viewport->height());
}
else
{
eventState->setInputRange(-1.0, -1.0, 1.0, 1.0);
}
_eventQueue->frame( getFrameStamp()->getReferenceTime() );
}
@@ -637,11 +658,6 @@ void Viewer::eventTraversal()
{
osg::Viewport* viewport = getCamera()->getViewport();
masterCameraVPW *= viewport->computeWindowMatrix();
eventState->setInputRange( viewport->x(), viewport->y(), viewport->x() + viewport->width(), viewport->y() + viewport->height());
}
else
{
eventState->setInputRange(-1.0, -1.0, 1.0, 1.0);
}