dart
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
dart::gui::osg::DragAndDrop Class Referenceabstract

DragAndDrop is a class that facilitates enabling various kinds of dart Entities to be dragged and dropped in an dart::gui::osg environment. More...

#include <DragAndDrop.hpp>

Inheritance diagram for dart::gui::osg::DragAndDrop:
Inheritance graph
[legend]
Collaboration diagram for dart::gui::osg::DragAndDrop:
Collaboration graph
[legend]

Public Types

enum  RotationOption : int { HOLD_MODKEY = 0, ALWAYS_ON, ALWAYS_OFF }
 

Public Member Functions

 DragAndDrop (Viewer *viewer, dart::dynamics::Entity *entity)
 Constructor.
 
virtual ~DragAndDrop ()
 Virtual destructor.
 
dart::dynamics::EntitygetEntity () const
 Get the Entity that this DragAndDrop is associated with.
 
virtual void update ()
 Called when mouse events are being handled.
 
void setObstructable (bool _obstructable)
 If true is passed in, this object will only be drag and droppable if there are no other objects between its picked point and the camera. More...
 
bool isObstructable () const
 If this is true, then this object will only be drag and droppable if there are no other objects between its picked point and the camera. More...
 
virtual void move ()=0
 Called to specify how the Entity should be moved.
 
virtual void saveState ()=0
 Called when a point gets picked, and is used to save the current state of the Entity.
 
virtual void release ()
 Called when the user lets go of the object that they are dragging and dropping. More...
 
virtual Eigen::Vector3d getConstrainedDx () const
 Default method for getting the translation requested by the user.
 
virtual Eigen::AngleAxisd getConstrainedRotation () const
 Default method for getting the rotation requested by the user.
 
void unconstrain ()
 Remove all constraints from the dragging and dropping.
 
void constrainToLine (const Eigen::Vector3d &slope)
 Constrain translation to only occur along the given slope, or constrain rotation to only occur about the given slope. More...
 
void constrainToPlane (const Eigen::Vector3d &normal)
 Constrain translation to only occur within the plane defined by the given normal, or constrain rotation to only occur about the given normal. More...
 
bool isMoving () const
 Returns the mAmMoving flag.
 
void setRotationOption (RotationOption option)
 Set the option for triggering rotations instead of translations.
 
RotationOption getRotationOption () const
 Get the current rotation option for this DnD.
 
void setRotationModKey (::osgGA::GUIEventAdapter::ModKeyMask rotationModKey)
 Set the modkey that will be used to toggle rotation for this DnD.
 
::osgGA::GUIEventAdapter::ModKeyMask getRotationModKey () const
 Get the modkey that will be used to toggle rotation for this DnD.
 
- Public Member Functions inherited from dart::common::Subject
virtual ~Subject ()
 Destructor will notify all Observers that it is destructing.
 
- Public Member Functions inherited from dart::common::Observer
virtual ~Observer ()
 Destructor will notify all Subjects that it is destructing.
 

Protected Member Functions

void handleDestructionNotification (const dart::common::Subject *subscription) override
 Perform cleanup when the subject is destroyed.
 
- Protected Member Functions inherited from dart::common::Subject
void sendDestructionNotification () const
 Send a destruction notification to all Observers. More...
 
void addObserver (Observer *_observer) const
 Add an Observer to the list of Observers.
 
void removeObserver (Observer *_observer) const
 Remove an Observer from the list of Observers.
 
- Protected Member Functions inherited from dart::common::Observer
void receiveDestructionNotification (const Subject *_subject)
 Called whenever a Subject is destroyed (or sends out a destruction notification). More...
 
void addSubject (const Subject *_subject)
 Add a Subject for this Observer.
 
void removeSubject (const Subject *_subject)
 Remove a Subject from this Observer.
 
void removeAllSubjects ()
 Remove all Subjects from this Observer.
 

Protected Attributes

ViewermViewer
 Pointer to the DnD's Viewer.
 
dart::dynamics::EntitymEntity
 Pointer to the DnD's Entity.
 
Eigen::Vector3d mPickedPosition
 The location in the world that was picked by the user.
 
Eigen::Vector3d mVector
 Reference vector for constraint (slope for line constraint, or normal for plane constraint)
 
Eigen::Vector3d mPivot
 Point in space about which rotations should happen.
 
ConstraintType mConstraintType
 Constraint type for this DnD.
 
bool mAmObstructable
 Whether other objects can block this one from being picked.
 
bool mAmMoving
 Whether this DnD is currently moving.
 
RotationOption mRotationOption
 Option for rotation settings.
 
::osgGA::GUIEventAdapter::ModKeyMask mRotationModKey
 Modkey for rotation.
 
- Protected Attributes inherited from dart::common::Subject
std::set< Observer * > mObservers
 List of current Observers.
 
- Protected Attributes inherited from dart::common::Observer
std::set< const Subject * > mSubjects
 List of current Subjects for this Observer.
 

Detailed Description

DragAndDrop is a class that facilitates enabling various kinds of dart Entities to be dragged and dropped in an dart::gui::osg environment.

Member Function Documentation

◆ constrainToLine()

void dart::gui::osg::DragAndDrop::constrainToLine ( const Eigen::Vector3d &  slope)

Constrain translation to only occur along the given slope, or constrain rotation to only occur about the given slope.

For rotation, this function is equivalent to constrainToPlane

◆ constrainToPlane()

void dart::gui::osg::DragAndDrop::constrainToPlane ( const Eigen::Vector3d &  normal)

Constrain translation to only occur within the plane defined by the given normal, or constrain rotation to only occur about the given normal.

For rotation, this function is equivalent to constrainToLine

◆ isObstructable()

bool dart::gui::osg::DragAndDrop::isObstructable ( ) const

If this is true, then this object will only be drag and droppable if there are no other objects between its picked point and the camera.

Default is true.

◆ release()

void dart::gui::osg::DragAndDrop::release ( )
virtual

Called when the user lets go of the object that they are dragging and dropping.

This function does nothing by default, but you can override it.

Reimplemented in dart::gui::osg::BodyNodeDnD.

◆ setObstructable()

void dart::gui::osg::DragAndDrop::setObstructable ( bool  _obstructable)

If true is passed in, this object will only be drag and droppable if there are no other objects between its picked point and the camera.


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