From Eric Sokolowsky, support for mouse scroll wheel in osgGA/osgProducer.

This commit is contained in:
Robert Osfield 2003-05-07 11:13:49 +00:00
parent aa0d5fc52e
commit ba8bf1e94c
5 changed files with 33 additions and 1 deletions

View File

@ -39,6 +39,7 @@ public:
};
enum EventType {
NONE=0,
PUSH,
RELEASE,
DOUBLECLICK,
@ -48,7 +49,10 @@ public:
KEYUP,
FRAME,
RESIZE,
NONE
SCROLLUP,
SCROLLDOWN,
SCROLLLEFT,
SCROLLRIGHT
};
enum KeySymbol

View File

@ -75,6 +75,9 @@ class OSGPRODUCER_EXPORT EventAdapter : public osgGA::GUIEventAdapter
/** method for adapting resize events. */
void adaptResize(double t, float Xmin, float Ymin, float Xmax, float Ymax);
/** method for adapting mouse scroll wheel events. */
void adaptMouseScroll(double t, Producer::KeyboardMouseCallback::ScrollingMotion sm);
/** method for adapting mouse motion events whilst mouse buttons are pressed.*/
void adaptMouseMotion(double t, float x, float y);

View File

@ -41,6 +41,7 @@ class OSGPRODUCER_EXPORT KeyboardMouseCallback : public Producer::KeyboardMouseC
virtual ~KeyboardMouseCallback() {}
// override KeyboardMouseCallback methods.
virtual void mouseScroll( Producer::KeyboardMouseCallback::ScrollingMotion sm );
virtual void mouseMotion( float mx, float my);
virtual void passiveMouseMotion( float mx, float my);

View File

@ -68,6 +68,20 @@ void EventAdapter::adaptResize(double time, float Xmin, float Ymin, float Xmax,
copyStaticVariables();
}
void EventAdapter::adaptMouseScroll(double time, Producer::KeyboardMouseCallback::ScrollingMotion sm)
{
_time = time;
if (sm == Producer::KeyboardMouseCallback::ScrollUp)
_eventType = SCROLLUP;
else if (sm == Producer::KeyboardMouseCallback::ScrollDown)
_eventType = SCROLLDOWN;
else
_eventType = NONE;
copyStaticVariables();
}
void EventAdapter::adaptButtonPress(double time,float x, float y, unsigned int button)
{
_time = time;

View File

@ -5,6 +5,16 @@
using namespace osgProducer;
void KeyboardMouseCallback::mouseScroll( Producer::KeyboardMouseCallback::ScrollingMotion sm )
{
osg::ref_ptr<EventAdapter> event = createEventAdapter();
event->adaptMouseScroll(getTime(), sm);
_eventQueueMutex.lock();
_eventQueue.push_back(event);
_eventQueueMutex.unlock();
}
void KeyboardMouseCallback::buttonPress( float mx, float my, unsigned int mbutton )
{
_mx = mx;