openscenegraph
KeySwitchMatrixManipulator
Go to the documentation of this file.
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2 *
3 * This library is open source and may be redistributed and/or modified under
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version. The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * OpenSceneGraph Public License for more details.
12*/
13
14#ifndef OSGUTIL_KEYSWITCMATRIXMANIPULATOR
15#define OSGUTIL_KEYSWITCMATRIXMANIPULATOR 1
16
17#include <osgGA/Export>
19#include <osgGA/GUIEventHandler>
20
21namespace osgGA{
22
23class GUIActionAdapter;
24
32{
33 public:
34
35 typedef std::pair<std::string, osg::ref_ptr<CameraManipulator> > NamedManipulator;
36 typedef std::map<int, NamedManipulator> KeyManipMap;
37
38 virtual const char* className() const { return "KeySwitchMatrixManipulator"; }
39
44 void addMatrixManipulator(int key, std::string name, CameraManipulator *cm);
45
50
51 unsigned int getNumMatrixManipulators() const { return _manips.size(); }
52
53 void selectMatrixManipulator(unsigned int num);
54
56 KeyManipMap& getKeyManipMap() { return _manips; }
57
59 const KeyManipMap& getKeyManipMap() const { return _manips; }
60
61
63 CameraManipulator* getCurrentMatrixManipulator() { return _current.get(); }
64
66 const CameraManipulator* getCurrentMatrixManipulator() const { return _current.get(); }
67
68
71
73 const CameraManipulator* getMatrixManipulatorWithIndex(unsigned int key) const;
74
77
79 const CameraManipulator* getMatrixManipulatorWithKey(unsigned int key) const;
80
81
82 // Overrides from CameraManipulator...
83
86
88 virtual void setByMatrix(const osg::Matrixd& matrix) { _current->setByMatrix(matrix); }
89
91 virtual void setByInverseMatrix(const osg::Matrixd& matrix) { _current->setByInverseMatrix(matrix); }
92
94 virtual osg::Matrixd getMatrix() const { return _current->getMatrix(); }
95
97 virtual osg::Matrixd getInverseMatrix() const { return _current->getInverseMatrix(); }
98
100 virtual osgUtil::SceneView::FusionDistanceMode getFusionDistanceMode() const { return _current->getFusionDistanceMode(); }
101
103 virtual float getFusionDistanceValue() const { return _current->getFusionDistanceValue(); }
104
105
106 virtual void setNode(osg::Node* n);
107
108 virtual const osg::Node* getNode() const { return _current->getNode(); }
109
110 virtual osg::Node* getNode() { return _current->getNode(); }
111
112 virtual void setHomePosition(const osg::Vec3d& eye, const osg::Vec3d& center, const osg::Vec3d& up, bool autoComputeHomePosition=false);
113
114 virtual void setAutoComputeHomePosition(bool flag);
115
116 virtual void computeHomePosition();
117
118 virtual void finishAnimation();
119
120 virtual void home(const GUIEventAdapter& ee,GUIActionAdapter& aa);
121
122 virtual void init(const GUIEventAdapter& ee,GUIActionAdapter& aa) { if (_current.valid()) _current->init(ee,aa); }
123
124 virtual bool handle(const GUIEventAdapter& ea,GUIActionAdapter& us);
125
127 virtual void getUsage(osg::ApplicationUsage& usage) const;
128
129 private:
130
131 KeyManipMap _manips;
132
134};
135
136}
137
138#endif
Definition CameraManipulator:40
Definition GUIActionAdapter:62
Definition GUIEventAdapter:82
Definition KeySwitchMatrixManipulator:32
const CameraManipulator * getCurrentMatrixManipulator() const
Definition KeySwitchMatrixManipulator:66
virtual void setByMatrix(const osg::Matrixd &matrix)
Definition KeySwitchMatrixManipulator:88
virtual const osg::Node * getNode() const
Definition KeySwitchMatrixManipulator:108
CameraManipulator * getCurrentMatrixManipulator()
Definition KeySwitchMatrixManipulator:63
virtual void setByInverseMatrix(const osg::Matrixd &matrix)
Definition KeySwitchMatrixManipulator:91
virtual osgUtil::SceneView::FusionDistanceMode getFusionDistanceMode() const
Definition KeySwitchMatrixManipulator:100
virtual void setHomePosition(const osg::Vec3d &eye, const osg::Vec3d &center, const osg::Vec3d &up, bool autoComputeHomePosition=false)
CameraManipulator * getMatrixManipulatorWithIndex(unsigned int key)
const KeyManipMap & getKeyManipMap() const
Definition KeySwitchMatrixManipulator:59
virtual float getFusionDistanceValue() const
Definition KeySwitchMatrixManipulator:103
virtual bool handle(const GUIEventAdapter &ea, GUIActionAdapter &us)
KeyManipMap & getKeyManipMap()
Definition KeySwitchMatrixManipulator:56
const CameraManipulator * getMatrixManipulatorWithKey(unsigned int key) const
virtual void setNode(osg::Node *n)
const CameraManipulator * getMatrixManipulatorWithIndex(unsigned int key) const
virtual osg::Matrixd getInverseMatrix() const
Definition KeySwitchMatrixManipulator:97
virtual void init(const GUIEventAdapter &ee, GUIActionAdapter &aa)
Definition KeySwitchMatrixManipulator:122
std::map< int, NamedManipulator > KeyManipMap
Definition KeySwitchMatrixManipulator:36
CameraManipulator * getMatrixManipulatorWithKey(unsigned int key)
virtual void setCoordinateFrameCallback(CoordinateFrameCallback *cb)
void addNumberedMatrixManipulator(CameraManipulator *cm)
virtual osg::Node * getNode()
Definition KeySwitchMatrixManipulator:110
virtual void getUsage(osg::ApplicationUsage &usage) const
virtual void setAutoComputeHomePosition(bool flag)
virtual void home(const GUIEventAdapter &ee, GUIActionAdapter &aa)
std::pair< std::string, osg::ref_ptr< CameraManipulator > > NamedManipulator
Definition KeySwitchMatrixManipulator:35
virtual osg::Matrixd getMatrix() const
Definition KeySwitchMatrixManipulator:94
void selectMatrixManipulator(unsigned int num)
virtual const char * className() const
Definition KeySwitchMatrixManipulator:38
void addMatrixManipulator(int key, std::string name, CameraManipulator *cm)
unsigned int getNumMatrixManipulators() const
Definition KeySwitchMatrixManipulator:51
FusionDistanceMode
Definition SceneView:339
Definition ApplicationUsage:26
Definition Matrixd:27
Definition Node:72
Definition Vec3d:30
Definition ref_ptr:32
Definition Callback:21
#define OSGGA_EXPORT
Definition osgGA/Export:40