#include <cameramanipulator.h>
Inherited by CameraManipulatorFollow, CameraManipulatorRace, and CameraManipulatorTV.
Inheritance diagram for CameraManipulator:
Public Member Functions | |
CameraManipulator (osg::Node *node, GlobalData &global, CameraHandle &cameraHandle) | |
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 | |
virtual void | manipulateAgent (OsgHandle &osgHandle) |
manipulate agent if Manipulation is active (should be called every simulation step) | |
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 bool | isWatchingAgentDefined () |
Checks if an agent is selected and if this agent is available. | |
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 | |
virtual void | calcManipulationPoint (float x, float y) |
manipulates Agent by forces. | |
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 |
CameraHandle & | camHandle |
GlobalData & | globalData |
double | degreeSmoothness |
double | lengthSmoothness |
double | degreeAccuracy |
double | lengthAccuracy |
Left mouse button: Pan and tilt Right mouse button: forward and sideways Middle mouse button: up and sideways
It also enables to manipulate agents with forces
CameraManipulator | ( | osg::Node * | node, | |
GlobalData & | global, | |||
CameraHandle & | cameraHandle | |||
) |
~CameraManipulator | ( | ) | [protected, virtual] |
void addMouseEvent | ( | const osgGA::GUIEventAdapter & | ea | ) | [protected, virtual] |
Add the current mouse GUIEvent to internal stack.
void calcManipulationPoint | ( | float | x, | |
float | y | |||
) | [protected, virtual] |
manipulates Agent by forces.
The given points are screen coords (-1 to 1) normalized.
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 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] |
bool isWatchingAgentDefined | ( | ) | [protected, virtual] |
Checks if an agent is selected and if this agent is available.
This agent must be listed in the global agent list.
void manageAgents | ( | const int & | fkey | ) | [protected, virtual] |
This manages the robots, switching between them and so on Is normally called from handle(.
..)
void manipulateAgent | ( | OsgHandle & | osgHandle | ) | [virtual] |
manipulate agent if Manipulation is active (should be called every simulation step)
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
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
CameraHandle& camHandle [protected] |
double degreeAccuracy [protected] |
double degreeSmoothness [protected] |
osg::ref_ptr<const osgGA::GUIEventAdapter> event [protected] |
osg::ref_ptr<const osgGA::GUIEventAdapter> event_old [protected] |
GlobalData& globalData [protected] |
double lengthAccuracy [protected] |
double lengthSmoothness [protected] |
float modelScale [protected] |
osg::ref_ptr<osg::Node> node [protected] |
osg::Matrixd pose [protected] |