DART
6.10.1
|
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>
Public Types | |
enum class | RotationOption : int { HOLD_MODKEY = 0 , ALWAYS_ON , ALWAYS_OFF } |
Public Member Functions | |
DragAndDrop (Viewer *viewer, dart::dynamics::Entity *entity) | |
Constructor. More... | |
virtual | ~DragAndDrop () |
Virtual destructor. More... | |
dart::dynamics::Entity * | getEntity () const |
Get the Entity that this DragAndDrop is associated with. More... | |
virtual void | update () |
Called when mouse events are being handled. More... | |
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. More... | |
virtual void | saveState ()=0 |
Called when a point gets picked, and is used to save the current state of the Entity. More... | |
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. More... | |
virtual Eigen::AngleAxisd | getConstrainedRotation () const |
Default method for getting the rotation requested by the user. More... | |
void | unconstrain () |
Remove all constraints from the dragging and dropping. More... | |
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. More... | |
void | setRotationOption (RotationOption option) |
Set the option for triggering rotations instead of translations. More... | |
RotationOption | getRotationOption () const |
Get the current rotation option for this DnD. More... | |
void | setRotationModKey (::osgGA::GUIEventAdapter::ModKeyMask rotationModKey) |
Set the modkey that will be used to toggle rotation for this DnD. More... | |
::osgGA::GUIEventAdapter::ModKeyMask | getRotationModKey () const |
Get the modkey that will be used to toggle rotation for this DnD. More... | |
Protected Member Functions | |
void | handleDestructionNotification (const dart::common::Subject *subscription) override |
Perform cleanup when the subject is destroyed. More... | |
void | sendDestructionNotification () const |
Send a destruction notification to all Observers. More... | |
void | addObserver (Observer *_observer) const |
Add an Observer to the list of Observers. More... | |
void | removeObserver (Observer *_observer) const |
Remove an Observer from the list of Observers. More... | |
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. More... | |
void | removeSubject (const Subject *_subject) |
Remove a Subject from this Observer. More... | |
void | removeAllSubjects () |
Remove all Subjects from this Observer. More... | |
Protected Attributes | |
Viewer * | mViewer |
Pointer to the DnD's Viewer. More... | |
dart::dynamics::Entity * | mEntity |
Pointer to the DnD's Entity. More... | |
Eigen::Vector3d | mPickedPosition |
The location in the world that was picked by the user. More... | |
Eigen::Vector3d | mVector |
Reference vector for constraint (slope for line constraint, or normal for plane constraint) More... | |
Eigen::Vector3d | mPivot |
Point in space about which rotations should happen. More... | |
ConstraintType | mConstraintType |
Constraint type for this DnD. More... | |
bool | mAmObstructable |
Whether other objects can block this one from being picked. More... | |
bool | mAmMoving |
Whether this DnD is currently moving. More... | |
RotationOption | mRotationOption |
Option for rotation settings. More... | |
::osgGA::GUIEventAdapter::ModKeyMask | mRotationModKey |
Modkey for rotation. More... | |
std::set< Observer * > | mObservers |
List of current Observers. More... | |
std::set< const Subject * > | mSubjects |
List of current Subjects for this Observer. More... | |
DragAndDrop is a class that facilitates enabling various kinds of dart Entities to be dragged and dropped in an dart::gui::osg environment.
|
strong |
dart::gui::osg::DragAndDrop::DragAndDrop | ( | Viewer * | viewer, |
dart::dynamics::Entity * | entity | ||
) |
Constructor.
|
virtual |
Virtual destructor.
|
protectedinherited |
Add an Observer to the list of Observers.
|
protectedinherited |
Add a Subject for this Observer.
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
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
|
virtual |
Default method for getting the translation requested by the user.
|
virtual |
Default method for getting the rotation requested by the user.
dart::dynamics::Entity * dart::gui::osg::DragAndDrop::getEntity | ( | ) | const |
Get the Entity that this DragAndDrop is associated with.
osgGA::GUIEventAdapter::ModKeyMask dart::gui::osg::DragAndDrop::getRotationModKey | ( | ) | const |
Get the modkey that will be used to toggle rotation for this DnD.
DragAndDrop::RotationOption dart::gui::osg::DragAndDrop::getRotationOption | ( | ) | const |
Get the current rotation option for this DnD.
|
overrideprotectedvirtual |
Perform cleanup when the subject is destroyed.
Reimplemented from dart::common::Observer.
Reimplemented in dart::gui::osg::SimpleFrameShapeDnD.
bool dart::gui::osg::DragAndDrop::isMoving | ( | ) | const |
Returns the mAmMoving flag.
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.
|
pure virtual |
Called to specify how the Entity should be moved.
Implemented in dart::gui::osg::BodyNodeDnD, dart::gui::osg::InteractiveFrameDnD, and dart::gui::osg::SimpleFrameDnD.
|
protectedinherited |
Called whenever a Subject is destroyed (or sends out a destruction notification).
Override handleDestructionNotification() in order to customize your class's response to destruction notifications.
|
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.
|
protectedinherited |
Remove all Subjects from this Observer.
|
protectedinherited |
Remove an Observer from the list of Observers.
|
protectedinherited |
Remove a Subject from this Observer.
|
pure virtual |
Called when a point gets picked, and is used to save the current state of the Entity.
Implemented in dart::gui::osg::BodyNodeDnD, dart::gui::osg::InteractiveFrameDnD, and dart::gui::osg::SimpleFrameDnD.
|
protectedinherited |
Send a destruction notification to all Observers.
This will cause all Observers to behave as if this Subject has been permanently deleted, so it should only be called when that behavior is desired.
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.
void dart::gui::osg::DragAndDrop::setRotationModKey | ( | ::osgGA::GUIEventAdapter::ModKeyMask | rotationModKey | ) |
Set the modkey that will be used to toggle rotation for this DnD.
void dart::gui::osg::DragAndDrop::setRotationOption | ( | RotationOption | option | ) |
Set the option for triggering rotations instead of translations.
void dart::gui::osg::DragAndDrop::unconstrain | ( | ) |
Remove all constraints from the dragging and dropping.
|
virtual |
Called when mouse events are being handled.
Reimplemented in dart::gui::osg::BodyNodeDnD, dart::gui::osg::InteractiveFrameDnD, dart::gui::osg::SimpleFrameShapeDnD, and dart::gui::osg::InteractiveToolDnD.
|
protected |
Whether this DnD is currently moving.
|
protected |
Whether other objects can block this one from being picked.
|
protected |
Constraint type for this DnD.
|
protected |
Pointer to the DnD's Entity.
|
mutableprotectedinherited |
List of current Observers.
|
protected |
The location in the world that was picked by the user.
|
protected |
Point in space about which rotations should happen.
|
protected |
Modkey for rotation.
|
protected |
Option for rotation settings.
|
protectedinherited |
List of current Subjects for this Observer.
|
protected |
Reference vector for constraint (slope for line constraint, or normal for plane constraint)