/* -*-c++-*- Present3D - Copyright (C) 1999-2006 Robert Osfield * * This software is open source and may be redistributed and/or modified under * the terms of the GNU General Public License (GPL) version 2.0. * The full license is in LICENSE.txt file included with this distribution,. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * include LICENSE.txt for more details. */ #include #include #include #include #include #include using namespace osgPresentation; KeyEventHandler::KeyEventHandler(int key, osgPresentation::Operation operation, const JumpData& jumpData): _key(key), _operation(operation), _jumpData(jumpData) { } KeyEventHandler::KeyEventHandler(int key, const std::string& str, osgPresentation::Operation operation, const JumpData& jumpData): _key(key), _command(str), _operation(operation), _jumpData(jumpData) { } KeyEventHandler::KeyEventHandler(int key, const osgPresentation::KeyPosition& keyPos, const JumpData& jumpData): _key(key), _keyPos(keyPos), _operation(osgPresentation::EVENT), _jumpData(jumpData) { } bool KeyEventHandler::handle(const osgGA::GUIEventAdapter& ea,osgGA::GUIActionAdapter& /*aa*/, osg::Object*, osg::NodeVisitor* /*nv*/) { if (ea.getHandled()) return false; switch(ea.getEventType()) { case(osgGA::GUIEventAdapter::KEYDOWN): { if (ea.getKey()==_key) { doOperation(); return true; } break; } default: break; } return false; } void KeyEventHandler::getUsage(osg::ApplicationUsage& /*usage*/) const { } void KeyEventHandler::doOperation() { switch(_operation) { case(osgPresentation::RUN): { OSG_NOTICE<<"Run "<<_command<dispatchEvent(_keyPos); break; } case(osgPresentation::JUMP): { OSG_NOTICE<<"Requires jump "<