OpenSceneGraph  3.0.1
Classes | Public Types | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes
osgGA::StandardManipulator Class Reference

StandardManipulator class provides basic functionality for user controlled manipulation. More...

Inheritance diagram for osgGA::StandardManipulator:
Inheritance graph
[legend]

List of all members.

Classes

class  AnimationData

Public Types

enum  UserInteractionFlags {
  UPDATE_MODEL_SIZE = 0x01, COMPUTE_HOME_USING_BBOX = 0x02, PROCESS_MOUSE_WHEEL = 0x04, SET_CENTER_ON_WHEEL_FORWARD_MOVEMENT = 0x08,
  DEFAULT_SETTINGS = UPDATE_MODEL_SIZE | PROCESS_MOUSE_WHEEL
}

Public Member Functions

 StandardManipulator (int flags=DEFAULT_SETTINGS)
 StandardManipulator (const StandardManipulator &m, const osg::CopyOp &copyOp=osg::CopyOp::SHALLOW_COPY)
virtual const char * className () const
 return the name of the object's class type.
virtual void setTransformation (const osg::Vec3d &eye, const osg::Quat &rotation)=0
 Sets manipulator by eye position and eye orientation.
virtual void setTransformation (const osg::Vec3d &eye, const osg::Vec3d &center, const osg::Vec3d &up)=0
 Sets manipulator by eye position, center of rotation, and up vector.
virtual void getTransformation (osg::Vec3d &eye, osg::Quat &rotation) const =0
 Gets manipulator's eye position and eye orientation.
virtual void getTransformation (osg::Vec3d &eye, osg::Vec3d &center, osg::Vec3d &up) const =0
 Gets manipulator's focal center, eye position, and up vector.
virtual void setNode (osg::Node *)
 Attach a node to the manipulator, automatically detaching any previously attached node.
virtual const osg::NodegetNode () const
 Return const node if attached.
virtual osg::NodegetNode ()
 Return node if attached.
virtual void setVerticalAxisFixed (bool value)
bool getVerticalAxisFixed () const
 Returns whether manipulator preserves camera's "UP" vector.
bool getAllowThrow () const
 Returns true if the camera can be thrown, false otherwise. It defaults to true.
virtual void setAllowThrow (bool allowThrow)
virtual void setAnimationTime (const double t)
double getAnimationTime () const
bool isAnimating () const
virtual void finishAnimation ()
virtual void home (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
 Move the camera to the default position.
virtual void home (double)
 Move the camera to the default position.
virtual void init (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
 Start/restart the manipulator.
virtual bool handle (const osgGA::GUIEventAdapter &ea, osgGA::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.

Protected Member Functions

virtual bool handleFrame (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool handleResize (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool handleMouseMove (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool handleMouseDrag (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool handleMousePush (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool handleMouseRelease (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool handleKeyDown (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool handleKeyUp (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool handleMouseWheel (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool handleMouseDeltaMovement (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool performMovement ()
virtual bool performMovementLeftMouseButton (const double eventTimeDelta, const double dx, const double dy)
virtual bool performMovementMiddleMouseButton (const double eventTimeDelta, const double dx, const double dy)
virtual bool performMovementRightMouseButton (const double eventTimeDelta, const double dx, const double dy)
virtual bool performMouseDeltaMovement (const float dx, const float dy)
virtual bool performAnimationMovement (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual void applyAnimationStep (const double currentProgress, const double prevProgress)
void addMouseEvent (const osgGA::GUIEventAdapter &ea)
void flushMouseEventStack ()
virtual bool isMouseMoving () const
float getThrowScale (const double eventTimeDelta) const
virtual void centerMousePointer (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
void fixVerticalAxis (osg::Vec3d &eye, osg::Quat &rotation, bool disallowFlipOver)
virtual bool setCenterByMousePointerIntersection (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual bool startAnimationByMousePointerIntersection (const osgGA::GUIEventAdapter &ea, osgGA::GUIActionAdapter &us)
virtual void allocAnimationData ()
bool getRelativeFlag (int index) const
void setRelativeFlag (int index, bool value)

Static Protected Member Functions

static void rotateYawPitch (osg::Quat &rotation, const double yaw, const double pitch, const osg::Vec3d &localUp=osg::Vec3d(0., 0., 0.))
static void fixVerticalAxis (osg::Quat &rotation, const osg::Vec3d &localUp, bool disallowFlipOver)
static void fixVerticalAxis (const osg::Vec3d &forward, const osg::Vec3d &up, osg::Vec3d &newUp, const osg::Vec3d &localUp, bool disallowFlipOver)
static int allocateRelativeFlag ()

Protected Attributes

bool _thrown
bool _allowThrow
float _mouseCenterX
float _mouseCenterY
osg::ref_ptr< const
osgGA::GUIEventAdapter
_ga_t1
osg::ref_ptr< const
osgGA::GUIEventAdapter
_ga_t0
double _delta_frame_time
 The approximate amount of time it is currently taking to draw a frame.
double _last_frame_time
 The time the last frame started.
osg::ref_ptr< osg::Node_node
double _modelSize
bool _verticalAxisFixed
osg::ref_ptr< AnimationData_animationData
int _flags
int _relativeFlags

Static Protected Attributes

static int numRelativeFlagsAllocated

Detailed Description

StandardManipulator class provides basic functionality for user controlled manipulation.


Member Enumeration Documentation

Enumerator:
UPDATE_MODEL_SIZE 
COMPUTE_HOME_USING_BBOX 
PROCESS_MOUSE_WHEEL 
SET_CENTER_ON_WHEEL_FORWARD_MOVEMENT 
DEFAULT_SETTINGS 

Constructor & Destructor Documentation

osgGA::StandardManipulator::StandardManipulator ( int  flags = DEFAULT_SETTINGS)
osgGA::StandardManipulator::StandardManipulator ( const StandardManipulator m,
const osg::CopyOp copyOp = osg::CopyOp::SHALLOW_COPY 
)

Member Function Documentation

void osgGA::StandardManipulator::addMouseEvent ( const osgGA::GUIEventAdapter ea) [protected]
virtual void osgGA::StandardManipulator::allocAnimationData ( ) [inline, protected, virtual]
static int osgGA::StandardManipulator::allocateRelativeFlag ( ) [static, protected]
virtual void osgGA::StandardManipulator::applyAnimationStep ( const double  currentProgress,
const double  prevProgress 
) [protected, virtual]
virtual void osgGA::StandardManipulator::centerMousePointer ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]
virtual const char* osgGA::StandardManipulator::className ( ) const [inline, virtual]

return the name of the object's class type.

Must be defined by derived classes.

Reimplemented from osgGA::CameraManipulator.

virtual void osgGA::StandardManipulator::finishAnimation ( ) [virtual]
static void osgGA::StandardManipulator::fixVerticalAxis ( osg::Quat rotation,
const osg::Vec3d localUp,
bool  disallowFlipOver 
) [static, protected]
void osgGA::StandardManipulator::fixVerticalAxis ( osg::Vec3d eye,
osg::Quat rotation,
bool  disallowFlipOver 
) [protected]
static void osgGA::StandardManipulator::fixVerticalAxis ( const osg::Vec3d forward,
const osg::Vec3d up,
osg::Vec3d newUp,
const osg::Vec3d localUp,
bool  disallowFlipOver 
) [static, protected]
void osgGA::StandardManipulator::flushMouseEventStack ( ) [protected]
bool osgGA::StandardManipulator::getAllowThrow ( ) const [inline]

Returns true if the camera can be thrown, false otherwise. It defaults to true.

References _allowThrow.

double osgGA::StandardManipulator::getAnimationTime ( ) const
virtual const osg::Node* osgGA::StandardManipulator::getNode ( ) const [virtual]

Return const node if attached.

Reimplemented from osgGA::CameraManipulator.

virtual osg::Node* osgGA::StandardManipulator::getNode ( ) [virtual]

Return node if attached.

Reimplemented from osgGA::CameraManipulator.

bool osgGA::StandardManipulator::getRelativeFlag ( int  index) const [inline, protected]

References _relativeFlags.

float osgGA::StandardManipulator::getThrowScale ( const double  eventTimeDelta) const [protected]
virtual void osgGA::StandardManipulator::getTransformation ( osg::Vec3d eye,
osg::Quat rotation 
) const [pure virtual]

Gets manipulator's eye position and eye orientation.

Implemented in osgGA::OrbitManipulator, and osgGA::FirstPersonManipulator.

virtual void osgGA::StandardManipulator::getTransformation ( osg::Vec3d eye,
osg::Vec3d center,
osg::Vec3d up 
) const [pure virtual]

Gets manipulator's focal center, eye position, and up vector.

Implemented in osgGA::OrbitManipulator, and osgGA::FirstPersonManipulator.

virtual void osgGA::StandardManipulator::getUsage ( osg::ApplicationUsage ) const [virtual]

Get the keyboard and mouse usage of this manipulator.

Reimplemented from osgGA::GUIEventHandler.

Reimplemented in osgGA::FlightManipulator.

bool osgGA::StandardManipulator::getVerticalAxisFixed ( ) const [inline]

Returns whether manipulator preserves camera's "UP" vector.

References _verticalAxisFixed.

virtual bool osgGA::StandardManipulator::handle ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [virtual]

Handle events, return true if handled, false otherwise.

Reimplemented from osgGA::CameraManipulator.

Reimplemented in osgGA::MultiTouchTrackballManipulator.

virtual bool osgGA::StandardManipulator::handleFrame ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]

Reimplemented in osgGA::FlightManipulator.

virtual bool osgGA::StandardManipulator::handleKeyDown ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]

Reimplemented in osgGA::FlightManipulator.

virtual bool osgGA::StandardManipulator::handleKeyUp ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]
virtual bool osgGA::StandardManipulator::handleMouseDeltaMovement ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]
virtual bool osgGA::StandardManipulator::handleMouseDrag ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]

Reimplemented in osgGA::FlightManipulator.

virtual bool osgGA::StandardManipulator::handleMouseMove ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]

Reimplemented in osgGA::FlightManipulator.

virtual bool osgGA::StandardManipulator::handleMousePush ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]

Reimplemented in osgGA::FlightManipulator.

virtual bool osgGA::StandardManipulator::handleMouseRelease ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]

Reimplemented in osgGA::FlightManipulator.

virtual bool osgGA::StandardManipulator::handleMouseWheel ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]
virtual bool osgGA::StandardManipulator::handleResize ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]
virtual void osgGA::StandardManipulator::home ( const osgGA::GUIEventAdapter ,
osgGA::GUIActionAdapter  
) [virtual]

Move the camera to the default position.

May be ignored by manipulators if home functionality is not appropriate.

Reimplemented from osgGA::CameraManipulator.

Reimplemented in osgGA::FirstPersonManipulator, and osgGA::FlightManipulator.

virtual void osgGA::StandardManipulator::home ( double  ) [virtual]

Move the camera to the default position.

This version does not require GUIEventAdapter and GUIActionAdapter so may be called from somewhere other than a handle() method in GUIEventHandler. Application must be aware of implications.

Reimplemented from osgGA::CameraManipulator.

Reimplemented in osgGA::FirstPersonManipulator.

virtual void osgGA::StandardManipulator::init ( const osgGA::GUIEventAdapter ,
osgGA::GUIActionAdapter  
) [virtual]

Start/restart the manipulator.

FIXME: what does this actually mean? Provide examples.

Reimplemented from osgGA::CameraManipulator.

Reimplemented in osgGA::FirstPersonManipulator, and osgGA::FlightManipulator.

bool osgGA::StandardManipulator::isAnimating ( ) const
virtual bool osgGA::StandardManipulator::isMouseMoving ( ) const [protected, virtual]
virtual bool osgGA::StandardManipulator::performAnimationMovement ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]
virtual bool osgGA::StandardManipulator::performMouseDeltaMovement ( const float  dx,
const float  dy 
) [protected, virtual]
virtual bool osgGA::StandardManipulator::performMovement ( ) [protected, virtual]

Reimplemented in osgGA::FlightManipulator.

virtual bool osgGA::StandardManipulator::performMovementLeftMouseButton ( const double  eventTimeDelta,
const double  dx,
const double  dy 
) [protected, virtual]
virtual bool osgGA::StandardManipulator::performMovementMiddleMouseButton ( const double  eventTimeDelta,
const double  dx,
const double  dy 
) [protected, virtual]
virtual bool osgGA::StandardManipulator::performMovementRightMouseButton ( const double  eventTimeDelta,
const double  dx,
const double  dy 
) [protected, virtual]
static void osgGA::StandardManipulator::rotateYawPitch ( osg::Quat rotation,
const double  yaw,
const double  pitch,
const osg::Vec3d localUp = osg::Vec3d(0., 0., 0.) 
) [static, protected]
virtual void osgGA::StandardManipulator::setAllowThrow ( bool  allowThrow) [virtual]
virtual void osgGA::StandardManipulator::setAnimationTime ( const double  t) [virtual]
virtual bool osgGA::StandardManipulator::setCenterByMousePointerIntersection ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]
virtual void osgGA::StandardManipulator::setNode ( osg::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::CameraManipulator.

Reimplemented in osgGA::NodeTrackerManipulator, and osgGA::TerrainManipulator.

void osgGA::StandardManipulator::setRelativeFlag ( int  index,
bool  value 
) [inline, protected]

References _relativeFlags.

virtual void osgGA::StandardManipulator::setTransformation ( const osg::Vec3d eye,
const osg::Quat rotation 
) [pure virtual]

Sets manipulator by eye position and eye orientation.

Implemented in osgGA::OrbitManipulator, and osgGA::FirstPersonManipulator.

virtual void osgGA::StandardManipulator::setTransformation ( const osg::Vec3d eye,
const osg::Vec3d center,
const osg::Vec3d up 
) [pure virtual]

Sets manipulator by eye position, center of rotation, and up vector.

Implemented in osgGA::OrbitManipulator, osgGA::FirstPersonManipulator, and osgGA::TerrainManipulator.

virtual void osgGA::StandardManipulator::setVerticalAxisFixed ( bool  value) [virtual]
virtual bool osgGA::StandardManipulator::startAnimationByMousePointerIntersection ( const osgGA::GUIEventAdapter ea,
osgGA::GUIActionAdapter us 
) [protected, virtual]

Member Data Documentation

Referenced by getAllowThrow().

The approximate amount of time it is currently taking to draw a frame.

This is used to compute the delta in translation/rotation during a thrown display update. It allows us to match an delta in position/rotation independent of the rendering frame rate.

The time the last frame started.

Used when _rate_sensitive is true so that we can match display update rate to rotation/translation rate.

Referenced by getRelativeFlag(), and setRelativeFlag().

Referenced by getVerticalAxisFixed().


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

osg logo
Generated at Mon Oct 3 2011 12:39:47 for the OpenSceneGraph by doxygen 1.7.5.