//C++ header - Open Scene Graph - Copyright (C) 1998-2002 Robert Osfield //Distributed under the terms of the GNU Library General Public License (LGPL) //as published by the Free Software Foundation. #ifndef OSGUTIL_KEYSWITCCAMERAMANIPULATORHER #define OSGUTIL_KEYSWITCHCAMERAMANIPULATORER 1 #include #include #include #include //#include namespace osgGA{ class GUIEventAdapter; class GUIActionAdapter; class OSGGA_EXPORT KeySwitchCameraManipulator : public CameraManipulator { public: // Local methods void addCameraManipulator(int key, std::string name, CameraManipulator *cm); void addNumberedCameraManipulator(CameraManipulator *cm); // Overrides from CameraManipulator... virtual void setCamera(osg::Camera* c) { _current->setCamera(c); } virtual const osg::Camera * getCamera() const { return _current->getCamera(); } virtual osg::Camera * getCamera() { return _current->getCamera(); } virtual void setNode(osg::Node* n) { _current->setNode(n); } virtual const osg::Node* getNode() const { return _current->getNode(); } virtual osg::Node* getNode() { return _current->getNode(); } virtual void home(const GUIEventAdapter& ee,GUIActionAdapter& aa) { _current->home(ee,aa); } virtual void init(const GUIEventAdapter& ee,GUIActionAdapter& aa) { _current->init(ee,aa); } virtual bool handle(const GUIEventAdapter& ea,GUIActionAdapter& us); private: typedef std::pair > NamedManipulator; typedef std::map KeyManipMap; KeyManipMap _manips; osg::ref_ptr _current; }; }; #endif