33#ifndef DART_GUI_OSG_DRAGANDDROP_HPP_
34#define DART_GUI_OSG_DRAGANDDROP_HPP_
38#include <Eigen/Geometry>
56class InteractiveFrame;
190 void move()
override;
251 void move()
override;
285 void move()
override;
310 ::osgGA::GUIEventAdapter::ModKeyMask modkey);
const CollisionOption & option
Collision option of DART.
Definition FCLCollisionDetector.cpp:157
The Observer class should be inherited by any class that wants to respond in a customized way to the ...
Definition Observer.hpp:52
The Subject class is a base class for any object that wants to report when it gets destroyed.
Definition Subject.hpp:58
BodyNode class represents a single node of the skeleton.
Definition BodyNode.hpp:79
Entity class is a base class for any objects that exist in the kinematic tree structure of DART.
Definition Entity.hpp:62
The SimpleFrame class offers a user-friendly way of creating arbitrary Frames within the kinematic tr...
Definition SimpleFrame.hpp:52
TemplateInverseKinematicsPtr is a templated class that enables users to create a reference-counting I...
Definition InverseKinematicsPtr.hpp:50
Definition DragAndDrop.hpp:266
bool isUsingWholeBody() const
Returns true if this DnD is using the whole body.
Definition DragAndDrop.cpp:860
void update() override
Called when mouse events are being handled.
Definition DragAndDrop.cpp:679
dart::dynamics::BodyNode * getBodyNode() const
Get the BodyNode associated with this DnD.
Definition DragAndDrop.cpp:673
Eigen::AngleAxisd mSavedRotation
The rotation of the BodyNode.
Definition DragAndDrop.hpp:337
::osgGA::GUIEventAdapter::ModKeyMask getPreserveOrientationModKey() const
Get the key that will preserve the orientation of the body.
Definition DragAndDrop.cpp:873
::osgGA::GUIEventAdapter::ModKeyMask mPreserveOrientationModKey
Key for preserving orientation.
Definition DragAndDrop.hpp:346
void setJointRestrictionModKey(::osgGA::GUIEventAdapter::ModKeyMask modkey)
Set the key that will restrict which joints are used by the DnD.
Definition DragAndDrop.cpp:880
std::size_t mAdditionalBodyNodes
Currently unused, but this will change in the future.
Definition DragAndDrop.hpp:352
void setPreserveOrientationModKey(::osgGA::GUIEventAdapter::ModKeyMask modkey)
Set the key that will preserve the orientation of the body.
Definition DragAndDrop.cpp:866
void useWholeBody(bool wholeBody)
Tell this DnD to use the whole body.
Definition DragAndDrop.cpp:854
bool isUsingExternalIK() const
Returns true if it is using an external IK.
Definition DragAndDrop.cpp:848
::osgGA::GUIEventAdapter::ModKeyMask mJointRestrictionModKey
Key for restricting joint usage.
Definition DragAndDrop.hpp:349
dart::dynamics::WeakBodyNodePtr mBodyNode
The BodyNode associated with this DnD.
Definition DragAndDrop.hpp:323
bool mUseWholeBody
Whether to use the whole body.
Definition DragAndDrop.hpp:343
void saveState() override
Called when a point gets picked, and is used to save the current state of the Entity.
Definition DragAndDrop.cpp:801
Eigen::Vector3d mSavedLocalOffset
The offset of the pick from the BodyNode origin, expressed in local coordinates.
Definition DragAndDrop.hpp:334
bool mUseExternalIK
Whether to use an external IK.
Definition DragAndDrop.hpp:340
Eigen::Vector3d mSavedGlobalOffset
The offset of the pick from the BodyNode origin, expressed in global coordinates.
Definition DragAndDrop.hpp:330
void move() override
Called to specify how the Entity should be moved.
Definition DragAndDrop.cpp:726
virtual ~BodyNodeDnD()=default
Virtual destructor.
void release() override
Called when the user lets go of the object that they are dragging and dropping.
Definition DragAndDrop.cpp:828
dart::dynamics::InverseKinematicsPtr mIK
The IK module being used by this DnD.
Definition DragAndDrop.hpp:326
::osgGA::GUIEventAdapter::ModKeyMask getJointRestrictionModKey() const
Get the key that will restrict which joints are used by the DnD.
Definition DragAndDrop.cpp:887
void useExternalIK(bool external)
Tell this DnD to use an external IK instead of the one embedded in the BodyNode.
Definition DragAndDrop.cpp:842
DragAndDrop is a class that facilitates enabling various kinds of dart Entities to be dragged and dro...
Definition DragAndDrop.hpp:61
Eigen::Vector3d mPivot
Point in space about which rotations should happen.
Definition DragAndDrop.hpp:157
virtual void update()
Called when mouse events are being handled.
Definition DragAndDrop.cpp:77
void setRotationOption(RotationOption option)
Set the option for triggering rotations instead of translations.
Definition DragAndDrop.cpp:213
::osgGA::GUIEventAdapter::ModKeyMask mRotationModKey
Modkey for rotation.
Definition DragAndDrop.hpp:172
dart::dynamics::Entity * getEntity() const
Get the Entity that this DragAndDrop is associated with.
Definition DragAndDrop.cpp:71
void constrainToPlane(const Eigen::Vector3d &normal)
Constrain translation to only occur within the plane defined by the given normal, or constrain rotati...
Definition DragAndDrop.cpp:200
Eigen::Vector3d mPickedPosition
The location in the world that was picked by the user.
Definition DragAndDrop.hpp:150
virtual void saveState()=0
Called when a point gets picked, and is used to save the current state of the Entity.
RotationOption getRotationOption() const
Get the current rotation option for this DnD.
Definition DragAndDrop.cpp:219
bool mAmMoving
Whether this DnD is currently moving.
Definition DragAndDrop.hpp:166
virtual Eigen::AngleAxisd getConstrainedRotation() const
Default method for getting the rotation requested by the user.
Definition DragAndDrop.cpp:149
virtual void move()=0
Called to specify how the Entity should be moved.
void handleDestructionNotification(const dart::common::Subject *subscription) override
Perform cleanup when the subject is destroyed.
Definition DragAndDrop.cpp:238
::osgGA::GUIEventAdapter::ModKeyMask getRotationModKey() const
Get the modkey that will be used to toggle rotation for this DnD.
Definition DragAndDrop.cpp:232
void setObstructable(bool _obstructable)
If true is passed in, this object will only be drag and droppable if there are no other objects betwe...
Definition DragAndDrop.cpp:124
bool isObstructable() const
If this is true, then this object will only be drag and droppable if there are no other objects betwe...
Definition DragAndDrop.cpp:130
bool isMoving() const
Returns the mAmMoving flag.
Definition DragAndDrop.cpp:207
void constrainToLine(const Eigen::Vector3d &slope)
Constrain translation to only occur along the given slope, or constrain rotation to only occur about ...
Definition DragAndDrop.cpp:193
virtual ~DragAndDrop()
Virtual destructor.
Definition DragAndDrop.cpp:65
ConstraintType mConstraintType
Constraint type for this DnD.
Definition DragAndDrop.hpp:160
RotationOption
Definition DragAndDrop.hpp:64
RotationOption mRotationOption
Option for rotation settings.
Definition DragAndDrop.hpp:169
virtual Eigen::Vector3d getConstrainedDx() const
Default method for getting the translation requested by the user.
Definition DragAndDrop.cpp:142
Viewer * mViewer
Pointer to the DnD's Viewer.
Definition DragAndDrop.hpp:144
virtual void release()
Called when the user lets go of the object that they are dragging and dropping.
Definition DragAndDrop.cpp:136
void unconstrain()
Remove all constraints from the dragging and dropping.
Definition DragAndDrop.cpp:187
Eigen::Vector3d mVector
Reference vector for constraint (slope for line constraint, or normal for plane constraint)
Definition DragAndDrop.hpp:154
void setRotationModKey(::osgGA::GUIEventAdapter::ModKeyMask rotationModKey)
Set the modkey that will be used to toggle rotation for this DnD.
Definition DragAndDrop.cpp:225
dart::dynamics::Entity * mEntity
Pointer to the DnD's Entity.
Definition DragAndDrop.hpp:147
bool mAmObstructable
Whether other objects can block this one from being picked.
Definition DragAndDrop.hpp:163
Definition DragAndDrop.hpp:236
void saveState() override
Called when a point gets picked, and is used to save the current state of the Entity.
Definition DragAndDrop.cpp:651
virtual ~InteractiveFrameDnD()=default
Virtual destructor.
InteractiveFrame * getFrame() const
Get the frame associated with this DnD.
Definition DragAndDrop.cpp:575
InteractiveFrame * mInteractiveFrame
Pointer to the interactive frame.
Definition DragAndDrop.hpp:261
void move() override
Called to specify how the Entity should be moved.
Definition DragAndDrop.cpp:645
std::vector< DragAndDrop * > mDnDs
Vector of DnD components that are united under this DnD.
Definition DragAndDrop.hpp:258
void update() override
Called when mouse events are being handled.
Definition DragAndDrop.cpp:581
Definition InteractiveFrame.hpp:110
SimpleFrameDnD is a DragAndDrop implementation for SimpleFrame objects.
Definition DragAndDrop.hpp:178
void move() override
Called to specify how the Entity should be moved.
Definition DragAndDrop.cpp:263
dart::dynamics::SimpleFrame * getSimpleFrame() const
Get the SimpleFrame associated with this DnD.
Definition DragAndDrop.cpp:257
Eigen::AngleAxisd mSavedRotation
The saved rotation of the frame.
Definition DragAndDrop.hpp:200
void saveState() override
Called when a point gets picked, and is used to save the current state of the Entity.
Definition DragAndDrop.cpp:298
dart::dynamics::SimpleFrame * mFrame
SimpleFrame pointer.
Definition DragAndDrop.hpp:197
virtual ~SimpleFrameDnD()=default
Virtual destructor.
SimpleFrameShapeDnD is a version of SimpleFrameDnD that allows a specific Shape within the SimpleFram...
Definition DragAndDrop.hpp:208
void handleDestructionNotification(const dart::common::Subject *subscription) override
Perform cleanup when the subject is destroyed.
Definition DragAndDrop.cpp:365
dart::dynamics::Shape * mShape
Shape associated with this DnD.
Definition DragAndDrop.hpp:231
void update() override
Called when mouse events are being handled.
Definition DragAndDrop.cpp:321
virtual ~SimpleFrameShapeDnD()=default
Virtual destructor.
dart::dynamics::Shape * getShape() const
Get the Shape associated with this DnD.
Definition DragAndDrop.cpp:315
Definition Viewer.hpp:111
ConstraintType
Definition DefaultEventHandler.hpp:89
Definition BulletCollisionDetector.cpp:60