Introduced new scheme for handling mouse events with osgViewer. The new scheme enables robust event handling even when using distortion correction render to texture Cameras.
This commit is contained in:
@@ -132,6 +132,11 @@ bool EventQueue::copyEvents(Events& events) const
|
||||
}
|
||||
}
|
||||
|
||||
void EventQueue::syncWindowRectangleWithGraphcisContext()
|
||||
{
|
||||
const osg::GraphicsContext::Traits* traits = (getGraphicsContext()!=0) ? getGraphicsContext()->getTraits() : 0;
|
||||
if (traits) _accumulateEventState->setWindowRectangle(traits->x, traits->y, traits->width, traits->height, !_useFixedMouseInputRange);
|
||||
}
|
||||
|
||||
void EventQueue::windowResize(int x, int y, int width, int height, double time)
|
||||
{
|
||||
@@ -490,6 +495,8 @@ void EventQueue::frame(double time)
|
||||
GUIEventAdapter* event = new GUIEventAdapter(*_accumulateEventState);
|
||||
event->setEventType(GUIEventAdapter::FRAME);
|
||||
event->setTime(time);
|
||||
|
||||
OSG_NOTICE<<"frame("<<time<<"), event->getX()="<<event->getX()<<", event->getY()="<<event->getY()<<", event->getXmin()="<<event->getXmin()<<", event->getYmin()="<<event->getYmin()<<", event->getXmax()="<<event->getXmax()<<", event->getYmax()="<<event->getYmax()<<std::endl;
|
||||
|
||||
addEvent(event);
|
||||
}
|
||||
|
||||
@@ -122,3 +122,14 @@ void GUIEventAdapter::addTouchPoint(unsigned int id, TouchPhase phase, float x,
|
||||
|
||||
_touchData->addTouchPoint(id, phase, x, y, tapCount);
|
||||
}
|
||||
|
||||
void GUIEventAdapter::copyPointerDataFrom(const osgGA::GUIEventAdapter& sourceEvent)
|
||||
{
|
||||
setGraphicsContext(const_cast<osg::GraphicsContext*>(sourceEvent.getGraphicsContext()));
|
||||
setX(sourceEvent.getX());
|
||||
setY(sourceEvent.getY());
|
||||
setInputRange(sourceEvent.getXmin(), sourceEvent.getYmin(), sourceEvent.getXmax(), sourceEvent.getYmax());
|
||||
setButtonMask(sourceEvent.getButtonMask());
|
||||
setMouseYOrientation(sourceEvent.getMouseYOrientation());
|
||||
setPointerDataList(sourceEvent.getPointerDataList());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user