CameraManipulator Class Reference

CameraManipulator is a MatrixManipulator which provides Flying simulator-like updating of the camera position & orientation. More...

#include <cameramanipulator.h>

Inherited by CameraManipulatorFollow, CameraManipulatorRace, and CameraManipulatorTV.

Inheritance diagram for CameraManipulator:

Inheritance graph
[legend]
Collaboration diagram for CameraManipulator:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 CameraManipulator (osg::Node *node, GlobalData &global)
virtual const char * className () const
 returns the classname of the manipulator it's NECCESSARY to define this funtion, otherwise the new manipulator WON'T WORK! (but ask me not why)
virtual void setByMatrix (const osg::Matrixd &matrix)
 normally called only when this manipulator is choosed
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 void setNode (osg::Node *)
 is called every time the draw is updated.
virtual const osg::Node * getNode () const
virtual osg::Node * getNode ()
virtual void setHome (const osg::Vec3 &eye, const osg::Vec3 &view)
 set the home position of the camera. (and place it there)
virtual void home (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
 place the camera at its home position
virtual void init (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool handle (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual void getUsage (osg::ApplicationUsage &usage) const
 Get the keyboard and mouse usage of this manipulator.
virtual void update ()
 updates the camera module at every drawstep should be called from the simulation loop

Protected Member Functions

virtual ~CameraManipulator ()
virtual void flushMouseEventStack ()
 Reset the internal GUIEvent stack.
virtual void addMouseEvent (const osgGA::GUIEventAdapter &ea)
 Add the current mouse GUIEvent to internal stack.
virtual void computeMatrix ()
virtual bool calcMovement ()
 For the give mouse movement calculate the movement of the camera.
virtual void manageAgents (const int &fkey)
 This manages the robots, switching between them and so on Is normally called from handle(...).
virtual void calcMovementByAgent ()
 This handles robot movements, so that the camera movemenent is right affected.
virtual void setHomeViewByAgent ()
 Sets the right view and eye if the robot has changed.
virtual void setHomeEyeByAgent ()
virtual void moveBehindAgent ()
 moves behind the robot which is actually watched
virtual void centerOnAgent ()
 centers on the robot which is actually watched

Protected Attributes

osg::ref_ptr< const osgGA::GUIEventAdapter > event_old
osg::ref_ptr< const osgGA::GUIEventAdapter > event
osg::ref_ptr< osg::Node > node
float modelScale
osg::Matrixd pose
GlobalDataglobalData
double degreeSmoothness
double lengthSmoothness
double degreeAccuracy
double lengthAccuracy

Static Protected Attributes

osg::Vec3 eye
osg::Vec3 view
osg::Vec3 home_eye
osg::Vec3 home_view
bool home_externally_set = false
osg::Vec3 desiredEye
osg::Vec3 desiredView
OdeAgentwatchingAgent
bool watchingAgentDefined = false
Position oldPositionOfAgent
bool oldPositionOfAgentDefined = false
int i

Detailed Description

CameraManipulator is a MatrixManipulator which provides Flying simulator-like updating of the camera position & orientation.

Left mouse button: Pan and tilt Right mouse button: forward and sideways Middle mouse button: up and sideways


Constructor & Destructor Documentation

CameraManipulator osg::Node *  node,
GlobalData global
 

~CameraManipulator  )  [protected, virtual]
 


Member Function Documentation

void addMouseEvent const osgGA::GUIEventAdapter &  ea  )  [protected, virtual]
 

Add the current mouse GUIEvent to internal stack.

bool calcMovement  )  [protected, virtual]
 

For the give mouse movement calculate the movement of the camera.

Return true is camera has moved and a redraw is required.

void calcMovementByAgent  )  [protected, virtual]
 

This handles robot movements, so that the camera movemenent is right affected.

should normally be overwritten by new cameramanipulator

Reimplemented in CameraManipulatorFollow, CameraManipulatorRace, and CameraManipulatorTV.

void centerOnAgent  )  [protected, virtual]
 

centers on the robot which is actually watched

virtual const char* className  )  const [inline, virtual]
 

returns the classname of the manipulator it's NECCESSARY to define this funtion, otherwise the new manipulator WON'T WORK! (but ask me not why)

Reimplemented in CameraManipulatorFollow, CameraManipulatorRace, and CameraManipulatorTV.

void computeMatrix  )  [protected, virtual]
 

void flushMouseEventStack  )  [protected, virtual]
 

Reset the internal GUIEvent stack.

Matrixd getInverseMatrix  )  const [virtual]
 

get the position of the manipulator as a inverse matrix of the manipulator, typically used as a model view matrix.

Matrixd getMatrix  )  const [virtual]
 

get the position of the manipulator as 4x4 Matrix.

Node * getNode  )  [virtual]
 

const Node * getNode  )  const [virtual]
 

void getUsage osg::ApplicationUsage &  usage  )  const [virtual]
 

Get the keyboard and mouse usage of this manipulator.

bool handle const osgGA::GUIEventAdapter &  ea,
osgGA::GUIActionAdapter &  us
[virtual]
 

void home const osgGA::GUIEventAdapter &  ea,
osgGA::GUIActionAdapter &  us
[virtual]
 

place the camera at its home position

void init const osgGA::GUIEventAdapter &  ea,
osgGA::GUIActionAdapter &  us
[virtual]
 

void manageAgents const int &  fkey  )  [protected, virtual]
 

This manages the robots, switching between them and so on Is normally called from handle(...).

void moveBehindAgent  )  [protected, virtual]
 

moves behind the robot which is actually watched

virtual void setByInverseMatrix const osg::Matrixd &  matrix  )  [inline, virtual]
 

set the position of the matrix manipulator using a 4x4 Matrix.

void setByMatrix const osg::Matrixd &  matrix  )  [virtual]
 

normally called only when this manipulator is choosed

void setHome const osg::Vec3 eye,
const osg::Vec3 view
[virtual]
 

set the home position of the camera. (and place it there)

void setHomeEyeByAgent  )  [protected, virtual]
 

Reimplemented in CameraManipulatorTV.

void setHomeViewByAgent  )  [protected, virtual]
 

Sets the right view and eye if the robot has changed.

Is called from manageRobots(); should be overwritten by new cameramanipulator (if needed)

Reimplemented in CameraManipulatorFollow, and CameraManipulatorTV.

void setNode osg::Node *   )  [virtual]
 

is called every time the draw is updated.

computes the movement of the camera, which is a difference between the desired pos and view and the actual pos and view.

void update  )  [virtual]
 

updates the camera module at every drawstep should be called from the simulation loop


Member Data Documentation

double degreeAccuracy [protected]
 

double degreeSmoothness [protected]
 

osg::Vec3 desiredEye [static, protected]
 

osg::Vec3 desiredView [static, protected]
 

osg::ref_ptr<const osgGA::GUIEventAdapter> event [protected]
 

osg::ref_ptr<const osgGA::GUIEventAdapter> event_old [protected]
 

osg::Vec3 eye [static, protected]
 

GlobalData& globalData [protected]
 

bool home_externally_set = false [static, protected]
 

osg::Vec3 home_eye [static, protected]
 

osg::Vec3 home_view [static, protected]
 

int i [static, protected]
 

double lengthAccuracy [protected]
 

double lengthSmoothness [protected]
 

float modelScale [protected]
 

osg::ref_ptr<osg::Node> node [protected]
 

Position oldPositionOfAgent [static, protected]
 

bool oldPositionOfAgentDefined = false [static, protected]
 

osg::Matrixd pose [protected]
 

osg::Vec3 view [static, protected]
 

OdeAgent * watchingAgent [static, protected]
 

bool watchingAgentDefined = false [static, protected]
 


The documentation for this class was generated from the following files:
Generated on Tue Jan 16 02:14:51 2007 for Robotsystem of the Robot Group Leipzig by doxygen 1.3.8