dart
|
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 | 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::Entity * | getEntity () 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. | |
![]() | |
virtual | ~Subject () |
Destructor will notify all Observers that it is destructing. | |
![]() | |
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. | |
![]() | |
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. | |
![]() | |
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 | |
Viewer * | mViewer |
Pointer to the DnD's Viewer. | |
dart::dynamics::Entity * | mEntity |
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. | |
![]() | |
std::set< Observer * > | mObservers |
List of current Observers. | |
![]() | |
std::set< const Subject * > | mSubjects |
List of current Subjects for this Observer. | |
DragAndDrop is a class that facilitates enabling various kinds of dart Entities to be dragged and dropped in an dart::gui::osg environment.
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
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.
|
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.
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.