OpenSceneGraph
3.0.1
|
StandardManipulator class provides basic functionality for user controlled manipulation. More...
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 ©Op=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 ¢er, 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 ¢er, 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::Node * | getNode () const |
Return const node if attached. | |
virtual osg::Node * | getNode () |
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 |
StandardManipulator class provides basic functionality for user controlled manipulation.
osgGA::StandardManipulator::StandardManipulator | ( | int | flags = DEFAULT_SETTINGS | ) |
osgGA::StandardManipulator::StandardManipulator | ( | const StandardManipulator & | m, |
const osg::CopyOp & | copyOp = osg::CopyOp::SHALLOW_COPY |
||
) |
void osgGA::StandardManipulator::addMouseEvent | ( | const osgGA::GUIEventAdapter & | ea | ) | [protected] |
virtual void osgGA::StandardManipulator::allocAnimationData | ( | ) | [inline, protected, virtual] |
Reimplemented in osgGA::OrbitManipulator, and osgGA::FirstPersonManipulator.
static int osgGA::StandardManipulator::allocateRelativeFlag | ( | ) | [static, protected] |
virtual void osgGA::StandardManipulator::applyAnimationStep | ( | const double | currentProgress, |
const double | prevProgress | ||
) | [protected, virtual] |
Reimplemented in osgGA::OrbitManipulator, and osgGA::FirstPersonManipulator.
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] |
Reimplemented in osgGA::OrbitManipulator, and osgGA::FirstPersonManipulator.
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] |
Reimplemented in osgGA::OrbitManipulator, and osgGA::FirstPersonManipulator.
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] |
Reimplemented in osgGA::NodeTrackerManipulator, osgGA::OrbitManipulator, osgGA::FirstPersonManipulator, and osgGA::FlightManipulator.
virtual bool osgGA::StandardManipulator::performMovementMiddleMouseButton | ( | const double | eventTimeDelta, |
const double | dx, | ||
const double | dy | ||
) | [protected, virtual] |
Reimplemented in osgGA::NodeTrackerManipulator, osgGA::OrbitManipulator, osgGA::FlightManipulator, and osgGA::TerrainManipulator.
virtual bool osgGA::StandardManipulator::performMovementRightMouseButton | ( | const double | eventTimeDelta, |
const double | dx, | ||
const double | dy | ||
) | [protected, virtual] |
Reimplemented in osgGA::NodeTrackerManipulator, osgGA::OrbitManipulator, osgGA::FlightManipulator, and osgGA::TerrainManipulator.
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] |
Reimplemented in osgGA::OrbitManipulator, and osgGA::FirstPersonManipulator.
bool osgGA::StandardManipulator::_allowThrow [protected] |
Referenced by getAllowThrow().
osg::ref_ptr< AnimationData > osgGA::StandardManipulator::_animationData [protected] |
double osgGA::StandardManipulator::_delta_frame_time [protected] |
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.
int osgGA::StandardManipulator::_flags [protected] |
osg::ref_ptr< const osgGA::GUIEventAdapter > osgGA::StandardManipulator::_ga_t0 [protected] |
osg::ref_ptr< const osgGA::GUIEventAdapter > osgGA::StandardManipulator::_ga_t1 [protected] |
double osgGA::StandardManipulator::_last_frame_time [protected] |
The time the last frame started.
Used when _rate_sensitive is true so that we can match display update rate to rotation/translation rate.
double osgGA::StandardManipulator::_modelSize [protected] |
float osgGA::StandardManipulator::_mouseCenterX [protected] |
float osgGA::StandardManipulator::_mouseCenterY [protected] |
osg::ref_ptr< osg::Node > osgGA::StandardManipulator::_node [protected] |
int osgGA::StandardManipulator::_relativeFlags [protected] |
Referenced by getRelativeFlag(), and setRelativeFlag().
bool osgGA::StandardManipulator::_thrown [protected] |
bool osgGA::StandardManipulator::_verticalAxisFixed [protected] |
Referenced by getVerticalAxisFixed().
int osgGA::StandardManipulator::numRelativeFlagsAllocated [static, protected] |
![]() | Generated at Mon Oct 3 2011 12:39:47 for the OpenSceneGraph by doxygen 1.7.5. |