18#ifndef _GAZEBO_GUI_JOINTMAKER_HH_
19#define _GAZEBO_GUI_JOINTMAKER_HH_
26#include <ignition/math/Pose3.hh>
27#include <ignition/math/Vector3.hh>
46 class recursive_mutex;
66 class MEUserCmdManager;
69 class JointMakerPrivate;
160 const std::string &_linkName)
const;
167 public: sdf::ElementPtr
SDF()
const;
209 const std::string &_modelName =
"");
225 public:
void SetSelected(
const std::string &_name,
const bool selected);
231 const bool selected);
235 public: std::map<std::string, std::string>
LinkList()
const;
240 public slots:
void OnType(
const int _typeInt);
246 public slots:
void SetAxis(
const std::string &_axis,
247 const ignition::math::Vector3d &_value);
274 const ignition::math::Pose3d &_pose,
const bool _resetAll,
275 const int _resetAxis = -1);
284 const std::string &_axis,
const std::string &_mode,
285 const bool _reverse);
321 private:
void OpenInspector(
const std::string &_name);
326 private: std::string ScopedLinkName(
const std::string &_name);
330 private:
void ShowContextMenu(
const std::string &_joint);
333 private:
void DeselectAll();
338 private:
void OnSetSelectedEntity(
const std::string &_name,
339 const std::string &_mode);
345 private:
void OnSetSelectedJoint(
const std::string &_name,
346 const bool _selected);
350 private:
void OnLinkInserted(
const std::string &_linkName);
354 private:
void OnLinkRemoved(
const std::string &_linkName);
360 private:
JointData *CreateJointLine(
const std::string &_name,
367 const std::string &_name);
400 private slots:
void OnOpenInspector();
404 private slots:
void OnDelete();
407 public:
static std::map<JointMaker::JointType, std::string>
jointTypes;
413 public:
static std::map<JointMaker::JointType, std::string>
418 private: std::unique_ptr<JointMakerPrivate> dataPtr;
479 public: std::vector<ignition::math::Vector3d>
axes;
491 private slots:
void OnOpenInspector();
495 private slots:
void OnApply();
common
Definition FuelModelDatabase.hh:37
gui
Definition KeyEventHandler.hh:29
rendering
Definition RenderEngine.hh:31
Generic description of a keyboard event.
Definition KeyEvent.hh:33
Generic description of a mouse event.
Definition MouseEvent.hh:36
Helper class to store joint data.
Definition JointMaker.hh:426
ignition::math::Pose3d childPose
Definition JointMaker.hh:463
std::vector< ignition::math::Vector3d > axes
Last known axes values.
Definition JointMaker.hh:479
rendering::DynamicLines * line
Visual line used to represent joint connecting parent and child.
Definition JointMaker.hh:470
JointMaker::JointType type
Type of joint.
Definition JointMaker.hh:476
rendering::VisualPtr hotspot
\brieft Visual of the hotspot
Definition JointMaker.hh:449
rendering::VisualPtr parent
Parent visual the joint is connected to.
Definition JointMaker.hh:452
rendering::VisualPtr visual
Visual of the dynamic line.
Definition JointMaker.hh:443
JointInspector * inspector
Inspector for configuring joint properties.
Definition JointMaker.hh:488
rendering::VisualPtr child
Child visual the joint is connected to.
Definition JointMaker.hh:455
rendering::JointVisualPtr jointVisual
Joint visual.
Definition JointMaker.hh:446
std::string name
Name of the joint.
Definition JointMaker.hh:440
ignition::math::Pose3d parentPose
Definition JointMaker.hh:459
void OpenInspector()
Open the joint inspector.
void UpdateMsg()
Update the joint message based on the other fields.
bool dirty
True if the joint needs update.
Definition JointMaker.hh:482
Ogre::BillboardSet * handles
Visual handle used to represent joint parent.
Definition JointMaker.hh:473
msgs::JointPtr jointMsg
Msg containing joint data.
Definition JointMaker.hh:485
ignition::math::Vector3d childScale
Definition JointMaker.hh:467
void Update()
Update this joint data.
A class to inspect and modify joints.
Definition JointInspector.hh:43
Handles the creation of joints in the model editor.
Definition JointMaker.hh:77
void JointAdded()
Qt signal when the joint creation process has ended.
static JointType ConvertJointType(const std::string &_type)
Convert a joint type string to enum.
void AddJoint(const std::string &_type)
Add a joint.
void Stop()
Stop the process of adding joint to the model.
void SetSelected(const std::string &_name, const bool selected)
Set the select state of a joint.
void SetLinksRelativePose(const ignition::math::Pose3d &_pose, const bool _resetAll, const int _resetAxis=-1)
A new relative pose for the child link of the joint being created hass been chosen.
static std::vector< ignition::math::Vector3d > unitVectors
Constant vector containing [UnitX, UnitY, UnitZ].
Definition JointMaker.hh:410
unsigned int JointCount()
Get the number of joints added.
JointData * CreateJoint(const rendering::VisualPtr &_parent, const rendering::VisualPtr &_child)
Create a joint with parent and child.
void Reset()
Reset the joint maker;.
void DisableEventHandlers()
Disable the mouse and key event handlers for the joint maker.
std::map< std::string, std::string > LinkList() const
Get the list of links.
void SetParentLink(const std::string &_name)
A new parent link for the joint being created has been chosen.
void RemoveJointsByLink(const std::string &_linkName)
Remove all joints connected to link.
static std::map< JointMaker::JointType, std::string > jointMaterials
A map of joint type to its corresponding material.
Definition JointMaker.hh:414
void SetChildLink(const std::string &_name)
A new child link for the joint being created has been chosen.
void SetAxis(const std::string &_axis, const ignition::math::Vector3d &_value)
A new axis for the joint being created has been chosen.
virtual ~JointMaker()
Destructor.
void AddScopedLinkName(const std::string &_name)
Add a scoped link name.
void EmitLinkInserted(const std::string &_linkId)
Qt signal to notify that a link has been inserted.
static std::map< JointMaker::JointType, std::string > jointTypes
A map of joint type to its string value.
Definition JointMaker.hh:407
std::vector< JointData * > JointDataByLink(const std::string &_linkName) const
Get a vector containing data for all joints connected to the given link.
void SetJointPose(const ignition::math::Pose3d &_pose)
A new joint pose for the joint being created has been chosen.
void ShowJoints(const bool _show)
Qt Callback to show / hide joint visuals.
void FinalizeCreation()
Finalize joint creation.
void SetSelected(const rendering::VisualPtr &_jointVis, const bool selected)
Set the select state of a joint visual.
static std::string JointMaterial(const std::string &_type)
Get the material for the joint type.
void OnType(const int _typeInt)
A new type for the joint being created has been chosen.
void SetUserCmdManager(MEUserCmdManager *_manager)
Set the user command manager variable.
void AlignLinks(const bool _childToParent, const std::string &_axis, const std::string &_mode, const bool _reverse)
Align the parent and child links of the joint being created.
static std::string TypeAsString(const JointMaker::JointType _type)
Get the joint type in string.
static unsigned int JointAxisCount(const JointMaker::JointType _type)
Get the axis count for joint type.
sdf::ElementPtr SDF() const
Get model SDF element containing all joints.
void GenerateSDF()
Generate SDF for all joints.
void RemoveJointByUser(const std::string &_jointName)
Remove joint by name and register user command.
void AddJoint(const JointType _type)
Add a joint.
void EnableEventHandlers()
Enable the mouse and key event handlers for the joint maker.
JointMaker::JointType State() const
Get state.
void EmitLinkRemoved(const std::string &_linkId)
Qt signal to notify that a link has been removed.
std::string CreateHotSpot(JointData *_joint)
Helper method to create hotspot visual for mouse interaction.
void Update()
Update callback on PreRender.
void RemoveJoint(const std::string &_jointName)
Remove joint by name.
void CreateJointFromSDF(sdf::ElementPtr _jointElem, const std::string &_modelName="")
Create a joint from SDF.
JointType
Definition JointMaker.hh:83
@ JOINT_SCREW
Screw joint.
Definition JointMaker.hh:95
@ JOINT_BALL
Ball joint.
Definition JointMaker.hh:99
@ JOINT_SLIDER
Slider joint.
Definition JointMaker.hh:89
@ JOINT_UNIVERSAL
Universal joint.
Definition JointMaker.hh:97
@ JOINT_HINGE
Hinge joint.
Definition JointMaker.hh:91
@ JOINT_HINGE2
Hinge2 joint.
Definition JointMaker.hh:93
@ JOINT_FIXED
Fixed joint.
Definition JointMaker.hh:87
@ JOINT_NONE
none
Definition JointMaker.hh:85
@ JOINT_GEARBOX
Gearbox joint.
Definition JointMaker.hh:101
Class which manages user commands in the model editor.
Definition MEUserCmdManager.hh:145
Class for drawing lines that can change.
Definition DynamicLines.hh:43
Definition JointMaker.hh:40
Definition JointMaker.hh:45
std::shared_ptr< JointVisual > JointVisualPtr
Definition RenderTypes.hh:142
std::shared_ptr< Visual > VisualPtr
Definition RenderTypes.hh:114
Forward declarations for the common classes.
Definition Animation.hh:27