Hi folks
I switched from OSG 2.0 to version 2.2 and stumbled over the keyboard
handler. I add to my viewer some manipulators like in osgviewer:
osgGA::KeySwitchMatrixManipulator* ksm = new
osgGA::KeySwitchMatrixManipulator();
ksm->addMatrixManipulator( '1', "Trackball", new
osgGA::TrackballManipulator() );
ksm->addMatrixManipulator( '2', "Flight", new
osgGA::FlightManipulator() );
ksm->addMatrixManipulator( '3', "Drive", new
osgGA::DriveManipulator() );
ksm->addMatrixManipulator( '4', "Terrain", new
osgGA::TerrainManipulator() );
viewer.setCameraManipulator( ksm );
After that I add for example the stats handler and my own keyboard
event handler (also like in the examples):
viewer.addEventHandler( new osgViewer::StatsHandler );
viewer.addEventHandler( new KeyboardEventHandler );
KeyboardEventHandler looks like this:
class KeyboardEventHandler : public osgGA::GUIEventHandler
{
public:
KeyboardEventHandler() {}
~KeyboardEventHandler() {}
virtual bool KeyboardEventHandler::handle(const
osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter&)
{
switch(ea.getEventType())
{
case(osgGA::GUIEventAdapter::KEYDOWN):
{
KeyboardEventHandler::handle_keyboard((char)ea.getKey());
return true;
}
case(osgGA::GUIEventAdapter::KEYUP):
{
return true;
}
default:
return false;
}
}
virtual void
KeyboardEventHandler::accept(osgGA::GUIEventHandlerVisitor& v) {
v.visit(*this); }
virtual void KeyboardEventHandler::handle_keyboard(char
lastkey)
{
switch (lastkey)
{
case('x'):
{
std::cout << "x" << std::endl;
break;
}
default:
std::cout << "- '" << lastkey << "' ("
<< (int)lastkey << ") isn't maped jet" << std::endl;
break;
}
};
};
If I press in the running app the key 'x', "x" is printed. If I press
's' I see the stats. But if I press '1', '2', '3' or '4' nothing
happens, the manipulators don't switch. Without adding my own handler to
the viewer I can press '3' and drive around, pressing 's' and viewing
stats (and of cause don't print "x").
Can somebody tell me why a self-made keyboard handler in OSG 2.2 stops
only the manipulators from switching and how to cure this problem
(working on WinXP SP2)? Looking forward to your answers.
--
Andreas Richter
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org