OSG教程:操作器管理类:KeySwitchMatrixManipulator
来源:第三维度
作者:FreeSouth[杨石兴]编著
选自《OSG程序设计教程》第二章第四节
osgGA::KeySwitchMatrixManipulator
类描述:KeySwitchMatrixManipulator类可以被看做一个管理器,管理一些被添加到它里面的操作器,用按键来切换这些操作器。比如‘1’会被切换到TrackBall‘2’会被切换到Driver等等。
类继承图:
类中方法:
virtual const char * className () const
说明:返回该类名称。
void addMatrixManipulator (int key, std::string name, MatrixManipulator *cm)
说明:添加一个操作器到keySwitchMatrixManipulator中。其中操作器可以是MatrixManipulator也可以是他的派生类型。比如TrackBall.
参数
void addNumberedMatrixManipulator (MatrixManipulator *cm)
说明:添加一个操作器到KeySwitchMatrixManipulator中。其中操作器可以是MatrixManipulator也可以是他的派生类型,比如TrackBall。他的热键是递增的,比上一个加入的热键加一,比如上次加入的热键是1那么这个就是2。
参数
unsigned int getNumMatrixManipulators () const
说明:得到当前KeySwitchMatrixManipulator中的操作器个数。返回具体数目。
void selectMatrixManipulator (unsigned int num)
说明:选择一个操作器。
参数
KeyManipMap & getKeyManipMap () const KeyManipMap & getKeyManipMap () const
说明:得到绑定到这个KeySwitchMatrixManipulator 中所有的操作器,包含键的映射。返回值是KeyManip其实是一个键-值对,前面为操作器对应的键,比如1,后面是对应的名,比如TrackBall
MatrixManipulator * getCurrentMatrixManipulator () const
MatrixManipulator * getCurrentMatrixManipulator () const
说明:得到当前使用的操作器类,返回该类的指针。
MatrixManipulator * getMatrixManipulatorWithIndex (unsigned int index) const
MatrixManipulator * getMatrixManipulatorWithIndex (unsigned int index) const
说明:得到某一个索引对映的操作器,返回该操作器的指针。
参数
MatrixManipulator * getMatrixManipulatorWithKey (unsigned int key) const
MatrixManipulator * getMatrixManipulatorWithKey (unsigned int key) const
说明:得到某一个热键对映的操作器,返回该操作器的指针。
参数
virtual void setMinimumDistance (float minimumDistance)
说明:设置最小的矩离。在靠近中心的时候视点会按比率伸缩以保持大于该最小矩。
参数
virtual void setCoordinateFrameCallback (CoordinateFrameCallback *cb)
说明:当前绘制坐标系统的回调,该回调的作用是告诉操作者具体的方向,东西南北。
参数
virtual void setByMatrix (const osg::Matrixd &matrix)
说明:用矩阵来设置当前视口。
参数
virtual void setByInverseMatrix (const osg::Matrixd &matrix)
说明:用逆矩阵来设置当前视口。
参数
virtual osg::Matrixd getMatrix () const virtual osg::Matrixd getInverseMatrix () const
说明:得到当前视口的矩阵/逆矩阵。
virtual osgUtil::SceneView::FusionDistanceMode getFusionDistanceMode () const
说明:得到空间融合距模式。返回值为模式值,为下列值之一:USE_FUSION_DISTANCE_VALUE, PROPORTIONAL_TO_SCREEN_DISTANCE
virtual float getFusionDistanceValue () const
说明:得到空间融合距值。
virtual void setNode (osg::Node *n)
说明:绑定一个结点到KeySwitchMatrixManipulator,会自动的解除以前的结点。如果设置为NULL,则不绑定任何结点。
参数
virtual const osg::Node * getNode () const
virtual osg::Node * getNode ()
说明:得到KeySwitchMatrixManipulator绑定的结点。
virtual void setHomePosition (const osg::Vec3d &eye, const osg::Vec3d ¢er, const osg::Vec3d &up, bool autoComputeHomePosition =false)
说明:设置视口原点,一般为按空格键后返回的点。使用欧拉坐标系固定。
参数
virtual void setAutoComputeHomePosition (bool flag)
说明:说明是否自动计算视口原点位置。
virtual void computeHomePosition ()
说明:计算视口原点位置。
virtual void home (const GUIEventAdapter &ee, GUIActionAdapter &aa)
virtual void init (const GUIEventAdapter &ee, GUIActionAdapter &aa)
virtual bool handle (const GUIEventAdapter &ea, GUIActionAdapter &us)
virtual void getUsage (osg::ApplicationUsage &usage) const
说明:上述是响应事件的一些函数,在事件响应一节中会详加解释。