# osgGA::KeySwitchMatrixManipulator Class Reference

KeySwitchMatrixManipulator is a decorator which allows the type of camera manipulator being used to be switched by pressing a key. More...

Inheritance diagram for osgGA::KeySwitchMatrixManipulator:

[legend]
List of all members.

## Public Types

typedef std::pair< std::string, osg::ref_ptr< MatrixManipulator > > | NamedManipulator
typedef std::map< int, NamedManipulator > | KeyManipMap

## Public Member Functions

virtual const char * | className () const
| return the name of the object's class type.
void | addMatrixManipulator (int key, std::string name, MatrixManipulator *cm)
| Add a camera manipulator with an associated name, and a key to trigger the switch,.
void | addNumberedMatrixManipulator (MatrixManipulator *cm)
| Add a camera manipulator with an autogenerated keybinding which is '1' + previous number of camera's registerd.
unsigned int | getNumMatrixManipulators () const
void | selectMatrixManipulator (unsigned int num)
KeyManipMap & | getKeyManipMap ()
| Get the complete list of manipulators attached to this keyswitch manipulator.
const KeyManipMap & | getKeyManipMap () const
| Get the const complete list of manipulators attached to this keyswitch manipulator.
MatrixManipulator * | getCurrentMatrixManipulator ()
| Get the current active manipulators.
const MatrixManipulator * | getCurrentMatrixManipulator () const
| Get the const current active manipulators.
MatrixManipulator * | getMatrixManipulator (unsigned int key)
| Get manipulator assigned to a specified key.
const MatrixManipulator * | getMatrixManipulator (unsigned int key) const
| Get const manipulator assigned to a specified key.
virtual void | setMinimumDistance (float minimumDistance)
| set the minimum distance (as ratio) the eye point can be zoomed in towards the center before the center is pushed forward.
virtual void | setCoordinateFrameCallback (CoordinateFrameCallback *cb)
| set the coordinate frame which callback tells the manipulator which way is up, east and north.
virtual void | setByMatrix (const osg::Matrixd &matrix)
| Set the position of the matrix manipulator using a 4x4 Matrix.
virtual void | setByInverseMatrix (const osg::Matrixd &matrix)
| set the position of the matrix manipulator using a 4x4 Matrix.
virtual osg::Matrixd | getMatrix () const
| get the position of the manipulator as 4x4 Matrix.
virtual osg::Matrixd | getInverseMatrix () const
| get the position of the manipulator as a inverse matrix of the manipulator, typically used as a model view matrix.
virtual osgUtil::SceneView::FusionDistanceMode | getFusionDistanceMode () const
| Get the FusionDistanceMode.
virtual float | getFusionDistanceValue () const
| Get the FusionDistanceValue.
virtual void | setNode (osg::Node *n)
| Attach a node to the manipulator, automatically detaching any previously attached node.
virtual const osg::Node * | getNode () const
| Return const node if attached.
virtual osg::Node * | getNode ()
| Return node if attached.
virtual void | setHomePosition (const osg::Vec3d &eye, const osg::Vec3d &center, const osg::Vec3d &up, bool autoComputeHomePosition=false)
| Manually set the home position, and set the automatic compute of home position.
virtual void | setAutoComputeHomePosition (bool flag)
| Set whether the automatic compute of the home position is enabled.
virtual void | computeHomePosition ()
| Compute the home position.
virtual void | home (const GUIEventAdapter &ee, GUIActionAdapter &aa)
| Move the camera to the default position.
virtual void | init (const GUIEventAdapter &ee, GUIActionAdapter &aa)
| Start/restart the manipulator.
virtual bool | handle (const GUIEventAdapter &ea, GUIActionAdapter &us)
| Handle events, return true if handled, false otherwise.
virtual void | getUsage (osg::ApplicationUsage &usage) const
| Get the keyboard and mouse usage of this manipulator.

## Detailed Description

KeySwitchMatrixManipulator is a decorator which allows the type of camera manipulator being used to be switched by pressing a key.

E.g. '1' for a TrackballManipultor, '2' for a DriveManipulator, '3' for a FlightManipulator. The manipulators available, and the associated switch keys, can be configured.

## Member Typedef Documentation

typedef std::map<int, NamedManipulator> osgGA::KeySwitchMatrixManipulator::KeyManipMap

typedef std::pair<std::string, osg::ref_ptr<MatrixManipulator> > osgGA::KeySwitchMatrixManipulator::NamedManipulator

## Member Function Documentation

void KeySwitchMatrixManipulator::addMatrixManipulator | ( | int | key,
|  | std::string | name,
|  | MatrixManipulator * | cm
| ) |

| Add a camera manipulator with an associated name, and a key to trigger the switch,.

void KeySwitchMatrixManipulator::addNumberedMatrixManipulator | ( | MatrixManipulator * | cm | ) |

| Add a camera manipulator with an autogenerated keybinding which is '1' + previous number of camera's registerd.

virtual const char* osgGA::KeySwitchMatrixManipulator::className | ( |  | ) | const`[inline, virtual]`

| return the name of the object's class type. Must be defined by derived classes. Reimplemented from osgGA::MatrixManipulator.

void KeySwitchMatrixManipulator::computeHomePosition | ( |  | ) | `[virtual]`

| Compute the home position. Reimplemented from osgGA::MatrixManipulator.

const MatrixManipulator* osgGA::KeySwitchMatrixManipulator::getCurrentMatrixManipulator | ( |  | ) | const`[inline]`

| Get the const current active manipulators.

MatrixManipulator* osgGA::KeySwitchMatrixManipulator::getCurrentMatrixManipulator | ( |  | ) | `[inline]`

| Get the current active manipulators.

virtual osgUtil::SceneView::FusionDistanceMode osgGA::KeySwitchMatrixManipulator::getFusionDistanceMode | ( |  | ) | const`[inline, virtual]`

| Get the FusionDistanceMode. Used by SceneView for setting up setereo convergence. Reimplemented from osgGA::MatrixManipulator.

virtual float osgGA::KeySwitchMatrixManipulator::getFusionDistanceValue | ( |  | ) | const`[inline, virtual]`

| Get the FusionDistanceValue. Used by SceneView for setting up setereo convergence. Reimplemented from osgGA::MatrixManipulator.

virtual osg::Matrixd osgGA::KeySwitchMatrixManipulator::getInverseMatrix | ( |  | ) | const`[inline, virtual]`

| get the position of the manipulator as a inverse matrix of the manipulator, typically used as a model view matrix. Implements osgGA::MatrixManipulator.

const KeyManipMap& osgGA::KeySwitchMatrixManipulator::getKeyManipMap | ( |  | ) | const`[inline]`

| Get the const complete list of manipulators attached to this keyswitch manipulator.

KeyManipMap& osgGA::KeySwitchMatrixManipulator::getKeyManipMap | ( |  | ) | `[inline]`

| Get the complete list of manipulators attached to this keyswitch manipulator.

virtual osg::Matrixd osgGA::KeySwitchMatrixManipulator::getMatrix | ( |  | ) | const`[inline, virtual]`

| get the position of the manipulator as 4x4 Matrix. Implements osgGA::MatrixManipulator.

const MatrixManipulator * KeySwitchMatrixManipulator::getMatrixManipulator | ( | unsigned int | key | ) | const

| Get const manipulator assigned to a specified key.

MatrixManipulator * KeySwitchMatrixManipulator::getMatrixManipulator | ( | unsigned int | key | ) |

| Get manipulator assigned to a specified key.

virtual osg::Node* osgGA::KeySwitchMatrixManipulator::getNode | ( |  | ) | `[inline, virtual]`

| Return node if attached. Reimplemented from osgGA::MatrixManipulator.

virtual const osg::Node* osgGA::KeySwitchMatrixManipulator::getNode | ( |  | ) | const`[inline, virtual]`

| Return const node if attached. Reimplemented from osgGA::MatrixManipulator.

unsigned int osgGA::KeySwitchMatrixManipulator::getNumMatrixManipulators | ( |  | ) | const`[inline]`

void KeySwitchMatrixManipulator::getUsage | ( | osg::ApplicationUsage & | usage | ) | const`[virtual]`

| Get the keyboard and mouse usage of this manipulator. Reimplemented from osgGA::GUIEventHandler.

bool KeySwitchMatrixManipulator::handle | ( | const GUIEventAdapter & | ea,
|  | GUIActionAdapter & | us
| ) | `[virtual]`

| Handle events, return true if handled, false otherwise. Reimplemented from osgGA::MatrixManipulator.

virtual void osgGA::KeySwitchMatrixManipulator::home | ( | const GUIEventAdapter & | ee,
|  | GUIActionAdapter & | aa
| ) | `[inline, virtual]`

| Move the camera to the default position. May be ignored by manipulators if home functionality is not appropriate. Reimplemented from osgGA::MatrixManipulator.

virtual void osgGA::KeySwitchMatrixManipulator::init | ( | const GUIEventAdapter & | ee,
|  | GUIActionAdapter & | aa
| ) | `[inline, virtual]`

| Start/restart the manipulator. FIXME: what does this actually mean? Provide examples. Reimplemented from osgGA::MatrixManipulator.

void KeySwitchMatrixManipulator::selectMatrixManipulator | ( | unsigned int | num | ) |

void KeySwitchMatrixManipulator::setAutoComputeHomePosition | ( | bool | flag | ) | `[virtual]`

| Set whether the automatic compute of the home position is enabled. Reimplemented from osgGA::MatrixManipulator.

virtual void osgGA::KeySwitchMatrixManipulator::setByInverseMatrix | ( | const osg::Matrixd & | matrix | ) | `[inline, virtual]`

| set the position of the matrix manipulator using a 4x4 Matrix. Implements osgGA::MatrixManipulator.

virtual void osgGA::KeySwitchMatrixManipulator::setByMatrix | ( | const osg::Matrixd & | matrix | ) | `[inline, virtual]`

| Set the position of the matrix manipulator using a 4x4 Matrix. Implements osgGA::MatrixManipulator.

void KeySwitchMatrixManipulator::setCoordinateFrameCallback | ( | CoordinateFrameCallback * | cb | ) | `[virtual]`

| set the coordinate frame which callback tells the manipulator which way is up, east and north. Reimplemented from osgGA::MatrixManipulator.

void KeySwitchMatrixManipulator::setHomePosition | ( | const osg::Vec3d & | eye,
|  | const osg::Vec3d & | center,
|  | const osg::Vec3d & | up,
|  | bool | autoComputeHomePosition = `false`
| ) | `[virtual]`

| Manually set the home position, and set the automatic compute of home position. Reimplemented from osgGA::MatrixManipulator.

void KeySwitchMatrixManipulator::setMinimumDistance | ( | float | minimumDistance | ) | `[virtual]`

| set the minimum distance (as ratio) the eye point can be zoomed in towards the center before the center is pushed forward. Reimplemented from osgGA::MatrixManipulator.

void KeySwitchMatrixManipulator::setNode | ( | osg::Node * | node | ) | `[virtual]`

| Attach a node to the manipulator, automatically detaching any previously attached node. setNode(NULL) detaches previous nodes. May be ignored by manipulators which do not require a reference model. Reimplemented from osgGA::MatrixManipulator.

The documentation for this class was generated from the following files:

- KeySwitchMatrixManipulator
- KeySwitchMatrixManipulator.cpp