DART
6.10.1
|
#include <DragAndDrop.hpp>
Public Types | |
enum class | RotationOption : int { HOLD_MODKEY = 0 , ALWAYS_ON , ALWAYS_OFF } |
Public Member Functions | |
BodyNodeDnD (Viewer *viewer, dart::dynamics::BodyNode *bn, bool useExternalIK=true, bool useWholeBody=false) | |
Constructor. More... | |
virtual | ~BodyNodeDnD ()=default |
Virtual destructor. More... | |
dart::dynamics::BodyNode * | getBodyNode () const |
Get the BodyNode associated with this DnD. More... | |
void | update () override |
Called when mouse events are being handled. More... | |
void | move () override |
Called to specify how the Entity should be moved. More... | |
void | saveState () override |
Called when a point gets picked, and is used to save the current state of the Entity. More... | |
void | release () override |
Called when the user lets go of the object that they are dragging and dropping. More... | |
void | useExternalIK (bool external) |
Tell this DnD to use an external IK instead of the one embedded in the BodyNode. More... | |
bool | isUsingExternalIK () const |
Returns true if it is using an external IK. More... | |
void | useWholeBody (bool wholeBody) |
Tell this DnD to use the whole body. More... | |
bool | isUsingWholeBody () const |
Returns true if this DnD is using the whole body. More... | |
void | setPreserveOrientationModKey (::osgGA::GUIEventAdapter::ModKeyMask modkey) |
Set the key that will preserve the orientation of the body. More... | |
::osgGA::GUIEventAdapter::ModKeyMask | getPreserveOrientationModKey () const |
Get the key that will preserve the orientation of the body. More... | |
void | setJointRestrictionModKey (::osgGA::GUIEventAdapter::ModKeyMask modkey) |
Set the key that will restrict which joints are used by the DnD. More... | |
::osgGA::GUIEventAdapter::ModKeyMask | getJointRestrictionModKey () const |
Get the key that will restrict which joints are used by the DnD. More... | |
dart::dynamics::Entity * | getEntity () const |
Get the Entity that this DragAndDrop is associated with. 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 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 | |
dart::dynamics::WeakBodyNodePtr | mBodyNode |
The BodyNode associated with this DnD. More... | |
dart::dynamics::InverseKinematicsPtr | mIK |
The IK module being used by this DnD. More... | |
Eigen::Vector3d | mSavedGlobalOffset |
The offset of the pick from the BodyNode origin, expressed in global coordinates. More... | |
Eigen::Vector3d | mSavedLocalOffset |
The offset of the pick from the BodyNode origin, expressed in local coordinates. More... | |
Eigen::AngleAxisd | mSavedRotation |
The rotation of the BodyNode. More... | |
bool | mUseExternalIK |
Whether to use an external IK. More... | |
bool | mUseWholeBody |
Whether to use the whole body. More... | |
::osgGA::GUIEventAdapter::ModKeyMask | mPreserveOrientationModKey |
Key for preserving orientation. More... | |
::osgGA::GUIEventAdapter::ModKeyMask | mJointRestrictionModKey |
Key for restricting joint usage. More... | |
std::size_t | mAdditionalBodyNodes |
Currently unused, but this will change in the future. More... | |
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... | |
|
stronginherited |
dart::gui::osg::BodyNodeDnD::BodyNodeDnD | ( | Viewer * | viewer, |
dart::dynamics::BodyNode * | bn, | ||
bool | useExternalIK = true , |
||
bool | useWholeBody = false |
||
) |
Constructor.
|
virtualdefault |
Virtual destructor.
|
protectedinherited |
Add an Observer to the list of Observers.
|
protectedinherited |
Add a Subject for this Observer.
|
inherited |
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
|
inherited |
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
dart::dynamics::BodyNode * dart::gui::osg::BodyNodeDnD::getBodyNode | ( | ) | const |
Get the BodyNode associated with this DnD.
|
virtualinherited |
Default method for getting the translation requested by the user.
|
virtualinherited |
Default method for getting the rotation requested by the user.
|
inherited |
Get the Entity that this DragAndDrop is associated with.
osgGA::GUIEventAdapter::ModKeyMask dart::gui::osg::BodyNodeDnD::getJointRestrictionModKey | ( | ) | const |
Get the key that will restrict which joints are used by the DnD.
osgGA::GUIEventAdapter::ModKeyMask dart::gui::osg::BodyNodeDnD::getPreserveOrientationModKey | ( | ) | const |
Get the key that will preserve the orientation of the body.
|
inherited |
Get the modkey that will be used to toggle rotation for this DnD.
|
inherited |
Get the current rotation option for this DnD.
|
overrideprotectedvirtualinherited |
Perform cleanup when the subject is destroyed.
Reimplemented from dart::common::Observer.
Reimplemented in dart::gui::osg::SimpleFrameShapeDnD.
|
inherited |
Returns the mAmMoving flag.
|
inherited |
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.
bool dart::gui::osg::BodyNodeDnD::isUsingExternalIK | ( | ) | const |
Returns true if it is using an external IK.
bool dart::gui::osg::BodyNodeDnD::isUsingWholeBody | ( | ) | const |
Returns true if this DnD is using the whole body.
|
overridevirtual |
Called to specify how the Entity should be moved.
Implements dart::gui::osg::DragAndDrop.
|
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.
|
overridevirtual |
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 from dart::gui::osg::DragAndDrop.
|
protectedinherited |
Remove all Subjects from this Observer.
|
protectedinherited |
Remove an Observer from the list of Observers.
|
protectedinherited |
Remove a Subject from this Observer.
|
overridevirtual |
Called when a point gets picked, and is used to save the current state of the Entity.
Implements dart::gui::osg::DragAndDrop.
|
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::BodyNodeDnD::setJointRestrictionModKey | ( | ::osgGA::GUIEventAdapter::ModKeyMask | modkey | ) |
Set the key that will restrict which joints are used by the DnD.
|
inherited |
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::BodyNodeDnD::setPreserveOrientationModKey | ( | ::osgGA::GUIEventAdapter::ModKeyMask | modkey | ) |
Set the key that will preserve the orientation of the body.
|
inherited |
Set the modkey that will be used to toggle rotation for this DnD.
|
inherited |
Set the option for triggering rotations instead of translations.
|
inherited |
Remove all constraints from the dragging and dropping.
|
overridevirtual |
Called when mouse events are being handled.
Reimplemented from dart::gui::osg::DragAndDrop.
void dart::gui::osg::BodyNodeDnD::useExternalIK | ( | bool | external | ) |
Tell this DnD to use an external IK instead of the one embedded in the BodyNode.
Using the one embedded in the BodyNode allows it to automatically be used in a WholeBodyIK, but using an external IK allows it to be automatically solved without instructing a WholeBodyIK to solve.
void dart::gui::osg::BodyNodeDnD::useWholeBody | ( | bool | wholeBody | ) |
Tell this DnD to use the whole body.
|
protected |
Currently unused, but this will change in the future.
|
protectedinherited |
Whether this DnD is currently moving.
|
protectedinherited |
Whether other objects can block this one from being picked.
|
protected |
The BodyNode associated with this DnD.
|
protectedinherited |
Constraint type for this DnD.
|
protectedinherited |
Pointer to the DnD's Entity.
|
protected |
The IK module being used by this DnD.
|
protected |
Key for restricting joint usage.
|
mutableprotectedinherited |
List of current Observers.
|
protectedinherited |
The location in the world that was picked by the user.
|
protectedinherited |
Point in space about which rotations should happen.
|
protected |
Key for preserving orientation.
|
protectedinherited |
Modkey for rotation.
|
protectedinherited |
Option for rotation settings.
|
protected |
The offset of the pick from the BodyNode origin, expressed in global coordinates.
|
protected |
The offset of the pick from the BodyNode origin, expressed in local coordinates.
|
protected |
The rotation of the BodyNode.
|
protectedinherited |
List of current Subjects for this Observer.
|
protected |
Whether to use an external IK.
|
protected |
Whether to use the whole body.
|
protectedinherited |
Reference vector for constraint (slope for line constraint, or normal for plane constraint)