OpenSceneGraph
|
CameraManipulator is an abstract base class defining the interface, and a certain amount of default functionality, for classes which wish to control OSG cameras in response to GUI events. More...
Classes | |
class | CoordinateFrameCallback |
callback class to use to allow matrix manipulators to query the application for the local coordinate frame. More... | |
Public Member Functions | |
virtual const char * | className () const |
return the name of the object's class type. More... | |
virtual void | setCoordinateFrameCallback (CoordinateFrameCallback *cb) |
set the coordinate frame which callback tells the manipulator which way is up, east and north. More... | |
CoordinateFrameCallback * | getCoordinateFrameCallback () |
get the coordinate frame callback which tells the manipulator which way is up, east and north. More... | |
const CoordinateFrameCallback * | getCoordinateFrameCallback () const |
get the coordinate frame callback which tells the manipulator which way is up, east and north. More... | |
osg::CoordinateFrame | getCoordinateFrame (const osg::Vec3d &position) const |
get the coordinate frame. More... | |
osg::Vec3d | getSideVector (const osg::CoordinateFrame &cf) const |
osg::Vec3d | getFrontVector (const osg::CoordinateFrame &cf) const |
osg::Vec3d | getUpVector (const osg::CoordinateFrame &cf) const |
virtual void | setByMatrix (const osg::Matrixd &matrix)=0 |
set the position of the matrix manipulator using a 4x4 Matrix. More... | |
virtual void | setByInverseMatrix (const osg::Matrixd &matrix)=0 |
set the position of the matrix manipulator using a 4x4 Matrix. More... | |
virtual osg::Matrixd | getMatrix () const =0 |
get the position of the manipulator as 4x4 Matrix. More... | |
virtual osg::Matrixd | getInverseMatrix () const =0 |
get the position of the manipulator as a inverse matrix of the manipulator, typically used as a model view matrix. More... | |
virtual void | updateCamera (osg::Camera &camera) |
update the camera for the current frame, typically called by the viewer classes. More... | |
virtual osgUtil::SceneView::FusionDistanceMode | getFusionDistanceMode () const |
Get the FusionDistanceMode. More... | |
virtual float | getFusionDistanceValue () const |
Get the FusionDistanceValue. More... | |
void | setIntersectTraversalMask (unsigned int mask) |
Set the mask to use when set up intersection traversal such as used in manipulators that follow terrain or have collision detection. More... | |
unsigned int | getIntersectTraversalMask () const |
Get the mask to use when set up intersection traversal such as used in manipulators that follow terrain or have collision detection. More... | |
virtual void | setNode (osg::Node *) |
Attach a node to the manipulator, automatically detaching any previously attached node. More... | |
virtual const osg::Node * | getNode () const |
Return const node if attached. More... | |
virtual osg::Node * | getNode () |
Return node if attached. More... | |
virtual void | setHomePosition (const osg::Vec3d &eye, const osg::Vec3d ¢er, const osg::Vec3d &up, bool autoComputeHomePosition=false) |
Manually set the home position, and set the automatic compute of home position. More... | |
virtual void | getHomePosition (osg::Vec3d &eye, osg::Vec3d ¢er, osg::Vec3d &up) const |
Get the manually set home position. More... | |
virtual void | setAutoComputeHomePosition (bool flag) |
Set whether the automatic compute of the home position is enabled. More... | |
bool | getAutoComputeHomePosition () const |
Get whether the automatic compute of the home position is enabled. More... | |
virtual void | computeHomePosition (const osg::Camera *camera=NULL, bool useBoundingBox=false) |
Compute the home position. More... | |
virtual void | finishAnimation () |
finish any active manipulator animations. More... | |
virtual void | home (const GUIEventAdapter &, GUIActionAdapter &) |
Move the camera to the default position. More... | |
virtual void | home (double) |
Move the camera to the default position. More... | |
virtual void | init (const GUIEventAdapter &, GUIActionAdapter &) |
Start/restart the manipulator. More... | |
virtual bool | handle (osgGA::Event *event, osg::Object *object, osg::NodeVisitor *nv) |
Handle event. More... | |
virtual bool | handle (const GUIEventAdapter &ea, GUIActionAdapter &us) |
Handle events, return true if handled, false otherwise. More... | |
![]() | |
GUIEventHandler (const GUIEventHandler &eh, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY) | |
META_Object (osgGA, GUIEventHandler) | |
virtual bool | handle (const GUIEventAdapter &ea, GUIActionAdapter &aa, osg::Object *, osg::NodeVisitor *) |
Handle events, return true if handled, false otherwise. More... | |
![]() | |
EventHandler (const EventHandler &eh, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY) | |
META_Object (osgGA, EventHandler) | |
virtual bool | run (osg::Object *object, osg::Object *data) |
NodeCallback overrides the Callback::run() method to adapt it the old style NodeCallback::operator()(Node* node, NodeVisitor* nv) method. More... | |
virtual void | operator() (osg::Node *node, osg::NodeVisitor *nv) |
Event traversal node callback method. More... | |
virtual void | event (osg::NodeVisitor *nv, osg::Drawable *drawable) |
Event traversal drawable callback method. More... | |
virtual void | getUsage (osg::ApplicationUsage &) const |
Get the user interface usage of this event handler, i.e. More... | |
![]() | |
NodeCallback (const NodeCallback &nc, const CopyOp ©op) | |
META_Object (osg, NodeCallback) | |
![]() | |
Callback (const Callback &cb, const CopyOp ©op) | |
META_Object (osg, Callback) | |
bool | traverse (osg::Object *object, osg::Object *data) |
traverse the nested callbacks or call NodeVisitor::traverse() if the object is Node, and data is NodeVisitor. More... | |
void | setNestedCallback (osg::Callback *cb) |
osg::Callback * | getNestedCallback () |
const osg::Callback * | getNestedCallback () const |
void | addNestedCallback (osg::Callback *nc) |
void | removeNestedCallback (osg::Callback *nc) |
![]() | |
Object () | |
Construct an object. More... | |
Object (bool threadSafeRefUnref) | |
Object (const Object &, const CopyOp ©op=CopyOp::SHALLOW_COPY) | |
Copy constructor, optional CopyOp object can be used to control shallow vs deep copying of dynamic data. More... | |
virtual Object * | cloneType () const =0 |
Clone the type of an object, with Object* return type. More... | |
virtual Object * | clone (const CopyOp &) const =0 |
Clone an object, with Object* return type. More... | |
virtual bool | isSameKindAs (const Object *) const |
virtual const char * | libraryName () const =0 |
return the name of the object's library. More... | |
std::string | getCompoundClassName () const |
return the compound class name that combines the library name and class name. More... | |
virtual Node * | asNode () |
Convert 'this' into a Node pointer if Object is a Node, otherwise return 0. More... | |
virtual const Node * | asNode () const |
convert 'const this' into a const Node pointer if Object is a Node, otherwise return 0. More... | |
virtual NodeVisitor * | asNodeVisitor () |
Convert 'this' into a NodeVisitor pointer if Object is a NodeVisitor, otherwise return 0. More... | |
virtual const NodeVisitor * | asNodeVisitor () const |
convert 'const this' into a const NodeVisitor pointer if Object is a NodeVisitor, otherwise return 0. More... | |
virtual StateAttribute * | asStateAttribute () |
Convert 'this' into a StateAttribute pointer if Object is a StateAttribute, otherwise return 0. More... | |
virtual const StateAttribute * | asStateAttribute () const |
convert 'const this' into a const StateAttribute pointer if Object is a StateAttribute, otherwise return 0. More... | |
virtual Uniform * | asUniform () |
Convert 'this' into a Uniform pointer if Object is a Uniform, otherwise return 0. More... | |
virtual const Uniform * | asUniform () const |
convert 'const this' into a const Uniform pointer if Object is a Uniform, otherwise return 0. More... | |
virtual void | setThreadSafeRefUnref (bool threadSafe) |
Set whether to use a mutex to ensure ref() and unref() are thread safe. More... | |
virtual void | setName (const std::string &name) |
Set the name of object using C++ style string. More... | |
void | setName (const char *name) |
Set the name of object using a C style string. More... | |
const std::string & | getName () const |
Get the name of object. More... | |
void | setDataVariance (DataVariance dv) |
Set the data variance of this object. More... | |
DataVariance | getDataVariance () const |
Get the data variance of this object. More... | |
virtual void | computeDataVariance () |
Compute the DataVariance based on an assessment of callback etc. More... | |
void | setUserDataContainer (osg::UserDataContainer *udc) |
set the UserDataContainer object. More... | |
template<class T > | |
void | setUserDataContainer (const ref_ptr< T > &udc) |
osg::UserDataContainer * | getUserDataContainer () |
get the UserDataContainer attached to this object. More... | |
const osg::UserDataContainer * | getUserDataContainer () const |
get the const UserDataContainer attached to this object. More... | |
osg::UserDataContainer * | getOrCreateUserDataContainer () |
Convenience method that returns the UserDataContainer, and if one doesn't already exist creates and assigns a DefaultUserDataContainer to the Object and then return this new UserDataContainer. More... | |
virtual void | setUserData (Referenced *obj) |
Set user data, data must be subclassed from Referenced to allow automatic memory handling. More... | |
template<class T > | |
void | setUserData (const ref_ptr< T > &ud) |
virtual Referenced * | getUserData () |
Get user data. More... | |
virtual const Referenced * | getUserData () const |
Get const user data. More... | |
template<typename T > | |
bool | getUserValue (const std::string &name, T &value) const |
Convenience method that casts the named UserObject to osg::TemplateValueObject<T> and gets the value. More... | |
template<typename T > | |
void | setUserValue (const std::string &name, const T &value) |
Convenience method that creates the osg::TemplateValueObject<T> to store the specified value and adds it as a named UserObject. More... | |
virtual void | resizeGLObjectBuffers (unsigned int) |
Resize any per context GLObject buffers to specified size. More... | |
virtual void | releaseGLObjects (osg::State *=0) const |
If State is non-zero, this function releases any associated OpenGL objects for the specified graphics context. More... | |
template<typename T > | |
BoolValueObject UCharValueObject UShortValueObject UIntValueObject DoubleValueObject Vec3fValueObject Vec2dValueObject Vec4dValueObject PlaneValueObject MatrixdValueObject BoundingBoxdValueObject BoundingSpheredValueObject bool | getUserValue (const std::string &name, T &value) const |
provide implementation of osg::Object::getUserValue(..) template | |
![]() | |
Referenced (bool threadSafeRefUnref) | |
Referenced (const Referenced &) | |
Referenced & | operator= (const Referenced &) |
bool | getThreadSafeRefUnref () const |
Get whether a mutex is used to ensure ref() and unref() are thread safe. More... | |
bool | getThreadSafeRefUnref () const |
OpenThreads::Mutex * | getRefMutex () const |
Get the mutex used to ensure thread safety of ref()/unref(). More... | |
OpenThreads::Mutex * | getRefMutex () const |
int | ref () const |
Increment the reference count by one, indicating that this object has another pointer which is referencing it. More... | |
int | unref () const |
Decrement the reference count by one, indicating that a pointer to this object is no longer referencing it. More... | |
int | unref_nodelete () const |
Decrement the reference count by one, indicating that a pointer to this object is no longer referencing it. More... | |
int | referenceCount () const |
Return the number of pointers currently referencing this object. More... | |
ObserverSet * | getObserverSet () const |
Get the ObserverSet if one is attached, otherwise return NULL. More... | |
ObserverSet * | getOrCreateObserverSet () const |
Get the ObserverSet if one is attached, otherwise create an ObserverSet, attach it, then return this newly created ObserverSet. More... | |
void | addObserver (Observer *observer) const |
Add a Observer that is observing this object, notify the Observer when this object gets deleted. More... | |
void | removeObserver (Observer *observer) const |
Remove Observer that is observing this object. More... | |
![]() | |
EventCallback (const EventCallback &, const CopyOp &) | |
META_Object (osg, EventCallback) | |
Protected Member Functions | |
CameraManipulator (const CameraManipulator &mm, const osg::CopyOp ©Op=osg::CopyOp::SHALLOW_COPY) | |
std::string | getManipulatorName () const |
![]() | |
virtual | ~Object () |
Object destructor. More... | |
![]() | |
void | signalObserversAndDelete (bool signalDelete, bool doDelete) const |
void | deleteUsingDeleteHandler () const |
Protected Attributes | |
unsigned int | _intersectTraversalMask |
bool | _autoComputeHomePosition |
osg::Vec3d | _homeEye |
osg::Vec3d | _homeCenter |
osg::Vec3d | _homeUp |
osg::ref_ptr< CoordinateFrameCallback > | _coordinateFrameCallback |
![]() | |
ref_ptr< Callback > | _nestedCallback |
![]() | |
std::string | _name |
DataVariance | _dataVariance |
osg::UserDataContainer * | _userDataContainer |
![]() | |
OpenThreads::AtomicPtr | _observerSet |
OpenThreads::Atomic | _refCount |
OpenThreads::Mutex * | _refMutex |
int | _refCount |
void * | _observerSet |
Additional Inherited Members | |
![]() | |
enum | DataVariance { DYNAMIC, STATIC, UNSPECIFIED } |
![]() | |
static OpenThreads::Mutex * | getGlobalReferencedMutex () |
Get the optional global Referenced mutex, this can be shared between all osg::Referenced. More... | |
static void | setThreadSafeReferenceCounting (bool enableThreadSafeReferenceCounting) |
Set whether reference counting should use a mutex for thread safe reference counting. More... | |
static bool | getThreadSafeReferenceCounting () |
Get whether reference counting is active. More... | |
static void | setDeleteHandler (DeleteHandler *handler) |
Set a DeleteHandler to which deletion of all referenced counted objects will be delegated. More... | |
static DeleteHandler * | getDeleteHandler () |
Get a DeleteHandler. More... | |
CameraManipulator is an abstract base class defining the interface, and a certain amount of default functionality, for classes which wish to control OSG cameras in response to GUI events.
|
inlinevirtual |
return the name of the object's class type.
Must be defined by derived classes.
Implements osg::Object.
Reimplemented in osgGA::UFOManipulator, osgGA::StandardManipulator, osgGA::AnimationPathManipulator, osgGA::KeySwitchMatrixManipulator, osgGA::DriveManipulator, osgGA::SphericalManipulator, and osgGA::CameraViewSwitchManipulator.
|
virtual |
Compute the home position.
|
inlinevirtual |
finish any active manipulator animations.
Reimplemented in osgGA::KeySwitchMatrixManipulator, and osgGA::StandardManipulator.
|
inline |
Get whether the automatic compute of the home position is enabled.
|
inline |
get the coordinate frame.
|
inline |
get the coordinate frame callback which tells the manipulator which way is up, east and north.
|
inline |
get the coordinate frame callback which tells the manipulator which way is up, east and north.
|
inlinevirtual |
Get the FusionDistanceMode.
Used by SceneView for setting up stereo convergence.
Reimplemented in osgGA::KeySwitchMatrixManipulator, osgGA::OrbitManipulator, and osgGA::SphericalManipulator.
|
inlinevirtual |
Get the FusionDistanceValue.
Used by SceneView for setting up stereo convergence.
Reimplemented in osgGA::KeySwitchMatrixManipulator, osgGA::OrbitManipulator, and osgGA::SphericalManipulator.
|
inlinevirtual |
Get the manually set home position.
|
inline |
Get the mask to use when set up intersection traversal such as used in manipulators that follow terrain or have collision detection.
|
pure virtual |
get the position of the manipulator as a inverse matrix of the manipulator, typically used as a model view matrix.
Implemented in osgGA::KeySwitchMatrixManipulator, osgGA::UFOManipulator, osgGA::NodeTrackerManipulator, osgGA::AnimationPathManipulator, osgGA::DriveManipulator, osgGA::OrbitManipulator, osgGA::FirstPersonManipulator, osgGA::SphericalManipulator, and osgGA::CameraViewSwitchManipulator.
|
pure virtual |
get the position of the manipulator as 4x4 Matrix.
Implemented in osgGA::KeySwitchMatrixManipulator, osgGA::NodeTrackerManipulator, osgGA::UFOManipulator, osgGA::AnimationPathManipulator, osgGA::OrbitManipulator, osgGA::DriveManipulator, osgGA::FirstPersonManipulator, osgGA::SphericalManipulator, and osgGA::CameraViewSwitchManipulator.
|
inlinevirtual |
Return const node if attached.
Reimplemented in osgGA::KeySwitchMatrixManipulator, osgGA::UFOManipulator, osgGA::StandardManipulator, osgGA::SphericalManipulator, osgGA::DriveManipulator, and osgGA::CameraViewSwitchManipulator.
|
inlinevirtual |
Return node if attached.
Reimplemented in osgGA::KeySwitchMatrixManipulator, osgGA::UFOManipulator, osgGA::StandardManipulator, osgGA::SphericalManipulator, osgGA::CameraViewSwitchManipulator, and osgGA::DriveManipulator.
|
inlinevirtual |
Handle event.
Override the handle(..) method in your event handlers to respond to events.
Reimplemented from osgGA::GUIEventHandler.
|
virtual |
Handle events, return true if handled, false otherwise.
Reimplemented from osgGA::GUIEventHandler.
Reimplemented in osgGA::KeySwitchMatrixManipulator, osgGA::UFOManipulator, osgGA::AnimationPathManipulator, osgGA::StandardManipulator, osgGA::SphericalManipulator, osgGA::DriveManipulator, osgGA::CameraViewSwitchManipulator, and osgGA::MultiTouchTrackballManipulator.
|
inlinevirtual |
Move the camera to the default position.
May be ignored by manipulators if home functionality is not appropriate.
Reimplemented in osgGA::KeySwitchMatrixManipulator, osgGA::UFOManipulator, osgGA::AnimationPathManipulator, osgGA::StandardManipulator, osgGA::SphericalManipulator, osgGA::FirstPersonManipulator, osgGA::DriveManipulator, and osgGA::FlightManipulator.
|
inlinevirtual |
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 in osgGA::UFOManipulator, osgGA::AnimationPathManipulator, osgGA::StandardManipulator, osgGA::SphericalManipulator, and osgGA::FirstPersonManipulator.
|
inlinevirtual |
Start/restart the manipulator.
FIXME: what does this actually mean? Provide examples.
Reimplemented in osgGA::KeySwitchMatrixManipulator, osgGA::UFOManipulator, osgGA::AnimationPathManipulator, osgGA::StandardManipulator, osgGA::SphericalManipulator, osgGA::FirstPersonManipulator, osgGA::DriveManipulator, osgGA::CameraViewSwitchManipulator, and osgGA::FlightManipulator.
|
inlinevirtual |
Set whether the automatic compute of the home position is enabled.
Reimplemented in osgGA::KeySwitchMatrixManipulator.
|
pure virtual |
set the position of the matrix manipulator using a 4x4 Matrix.
Implemented in osgGA::KeySwitchMatrixManipulator, osgGA::UFOManipulator, osgGA::AnimationPathManipulator, osgGA::OrbitManipulator, osgGA::FirstPersonManipulator, osgGA::DriveManipulator, osgGA::SphericalManipulator, and osgGA::CameraViewSwitchManipulator.
|
pure virtual |
set the position of the matrix manipulator using a 4x4 Matrix.
Implemented in osgGA::KeySwitchMatrixManipulator, osgGA::NodeTrackerManipulator, osgGA::UFOManipulator, osgGA::AnimationPathManipulator, osgGA::TerrainManipulator, osgGA::OrbitManipulator, osgGA::FirstPersonManipulator, osgGA::DriveManipulator, osgGA::SphericalManipulator, and osgGA::CameraViewSwitchManipulator.
|
inlinevirtual |
set the coordinate frame which callback tells the manipulator which way is up, east and north.
Reimplemented in osgGA::KeySwitchMatrixManipulator.
|
inlinevirtual |
Manually set the home position, and set the automatic compute of home position.
Reimplemented in osgGA::KeySwitchMatrixManipulator.
|
inline |
Set the mask to use when set up intersection traversal such as used in manipulators that follow terrain or have collision detection.
The intersection traversal mask is useful for controlling what parts of the scene graph should be used for intersection purposes.
|
inlinevirtual |
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 in osgGA::KeySwitchMatrixManipulator, osgGA::UFOManipulator, osgGA::NodeTrackerManipulator, osgGA::StandardManipulator, osgGA::SphericalManipulator, osgGA::DriveManipulator, osgGA::TerrainManipulator, and osgGA::CameraViewSwitchManipulator.
|
inlinevirtual |
update the camera for the current frame, typically called by the viewer classes.
Default implementation simply set the camera view matrix.