#include #include #include #include using namespace osgProducer; void KeyboardMouseCallback::mouseScroll( Producer::KeyboardMouseCallback::ScrollingMotion sm ) { osg::ref_ptr event = createEventAdapter(); _eventQueueMutex.lock(); event->adaptMouseScroll(getTime(), sm); _eventQueue.push_back(event); _eventQueueMutex.unlock(); } void KeyboardMouseCallback::buttonPress( float mx, float my, unsigned int mbutton ) { _mx = mx; _my = my; _mbutton |= (1<<(mbutton-1)); osg::ref_ptr event = createEventAdapter(); _eventQueueMutex.lock(); event->adaptButtonPress(getTime(),mx,my,mbutton); _eventQueue.push_back(event); _eventQueueMutex.unlock(); } void KeyboardMouseCallback::buttonRelease( float mx, float my, unsigned int mbutton ) { _mx = mx; _my = my; _mbutton &= ~(1<<(mbutton-1)); osg::ref_ptr event = createEventAdapter(); _eventQueueMutex.lock(); event->adaptButtonRelease(getTime(),mx,my,mbutton); _eventQueue.push_back(event); _eventQueueMutex.unlock(); } void KeyboardMouseCallback::doubleButtonPress( float mx, float my, unsigned int mbutton ) { _mx = mx; _my = my; _mbutton |= (1<<(mbutton-1)); osg::ref_ptr event = createEventAdapter(); _eventQueueMutex.lock(); event->adaptButtonPress(getTime(),mx,my,mbutton); _eventQueue.push_back(event); _eventQueueMutex.unlock(); } void KeyboardMouseCallback::keyPress( Producer::KeyCharacter key ) { osg::ref_ptr event = createEventAdapter(); _eventQueueMutex.lock(); event->adaptKeyPress(getTime(),key); _eventQueue.push_back(event); _eventQueueMutex.unlock(); // check against adapted key symbol. if (_escapeKeySetsDone && event->getKey()==osgGA::GUIEventAdapter::KEY_Escape) _done = true; } void KeyboardMouseCallback::keyRelease( Producer::KeyCharacter key ) { osg::ref_ptr event = createEventAdapter(); _eventQueueMutex.lock(); event->adaptKeyRelease(getTime(),key); _eventQueue.push_back(event); _eventQueueMutex.unlock(); } void KeyboardMouseCallback::specialKeyPress( Producer::KeyCharacter key ) { osg::ref_ptr event = createEventAdapter(); _eventQueueMutex.lock(); event->adaptKeyPress(getTime(),key); _eventQueue.push_back(event); _eventQueueMutex.unlock(); // check against adapted key symbol. if (_escapeKeySetsDone && event->getKey()==osgGA::GUIEventAdapter::KEY_Escape) _done = true; } void KeyboardMouseCallback::specialKeyRelease( Producer::KeyCharacter key ) { osg::ref_ptr event = createEventAdapter(); _eventQueueMutex.lock(); event->adaptKeyRelease(getTime(),key); _eventQueue.push_back(event); _eventQueueMutex.unlock(); } void KeyboardMouseCallback::windowConfig( int x, int y, unsigned int width, unsigned int height ) { osg::ref_ptr event = createEventAdapter(); _eventQueueMutex.lock(); event->adaptResize(getTime(), x, y, x+width, y+height ); _eventQueue.push_back(event); _eventQueueMutex.unlock(); } void KeyboardMouseCallback::mouseMotion( float mx, float my) { _mx = mx; _my = my; osg::ref_ptr event = createEventAdapter(); _eventQueueMutex.lock(); event->adaptMouseMotion(getTime(),mx,my); _eventQueue.push_back(event); _eventQueueMutex.unlock(); } void KeyboardMouseCallback::passiveMouseMotion( float mx, float my) { _mx = mx; _my = my; //std::cout << "mx="<