PoseGizmo.cpp
Go to the documentation of this file.
1 #include "PoseGizmo.h"
2 
3 
4 namespace viz = armarx::viz;
5 
6 namespace armarx::viz
7 {
8 
10  {
11  box.enable(viz::interaction().selection().transform().hideDuringTransform());
12  }
13 
14  void
15  PoseGizmo::setLayer(const Layer& layer_)
16  {
17  this->layer = layer_;
18  this->layer.add(box);
19  this->layer.add(pose);
20  }
21 
22  void
24  {
25  const Eigen::Matrix4f current = getCurrent();
26  box.pose(current);
27  pose.pose(current);
28  }
29 
30  void
32  {
33  const Eigen::Matrix4f current = getCurrent();
34  box.pose(initial);
35  pose.pose(current);
36  }
37 
38  bool
40  {
41  if (interaction.element() != box.data_->id)
42  {
43  return false;
44  }
45 
46  switch (interaction.type())
47  {
49  {
50  // Nothing to do.
51  }
52  break;
53 
55  {
56  // Update state of tcp object
57  transform = interaction.transformation();
58 
59  if (interaction.isTransformDuring())
60  {
62  }
63 
64  stage->add(layer);
65  return true;
66  }
67  break;
68 
70  {
71  // If an object is deselected, we apply the transformation
72 
73  initial = getCurrent();
74  transform.setIdentity();
75 
76  update();
77  stage->add(layer);
78 
79  return true;
80  }
81  break;
82 
84  {
85  }
86 
87  default:
88  {
89  // Ignore other interaction types
90  }
91  break;
92  }
93 
94  return false;
95  }
96 
99  {
100  return transform * initial;
101  }
102 
103 } // namespace armarx::viz
armarx::viz::StagedCommit::add
void add(Layer const &layer)
Stage a layer to be committed later via client.apply(*this)
Definition: Client.h:37
armarx::viz::PoseGizmo::box
viz::Box box
Definition: PoseGizmo.h:32
armarx::viz::InteractionFeedbackType::ContextMenuChosen
@ ContextMenuChosen
A context menu entry was chosen.
armarx::viz::interaction
InteractionDescription interaction()
Definition: ElementOps.h:109
GfxTL::Matrix4f
MatrixXX< 4, 4, float > Matrix4f
Definition: MatrixXX.h:650
armarx::viz::PoseGizmo::PoseGizmo
PoseGizmo()
Definition: PoseGizmo.cpp:9
armarx::viz::Layer::add
void add(ElementT const &element)
Definition: Layer.h:31
armarx::viz::StagedCommit
A staged commit prepares multiple layers to be committed.
Definition: Client.h:30
armarx::viz::ElementOps::data_
IceInternal::Handle< ElementT > data_
Definition: ElementOps.h:315
armarx::viz::InteractionFeedbackType::Select
@ Select
An element was selected.
armarx::viz::PoseGizmo::initial
Eigen::Matrix4f initial
Definition: PoseGizmo.h:27
armarx::viz::InteractionFeedbackType::Transform
@ Transform
The element was transformed (translated or rotated).
armarx::viz::InteractionFeedback
Definition: Interaction.h:59
armarx::viz::PoseGizmo::updateDuringTransform
void updateDuringTransform()
Definition: PoseGizmo.cpp:31
armarx::viz::PoseGizmo::update
void update()
Definition: PoseGizmo.cpp:23
armarx::viz::PoseGizmo::getCurrent
Eigen::Matrix4f getCurrent() const
Definition: PoseGizmo.cpp:98
PoseGizmo.h
armarx::viz::PoseGizmo::handleInteraction
bool handleInteraction(const viz::InteractionFeedback &interaction, viz::StagedCommit *stage)
Definition: PoseGizmo.cpp:39
armarx::viz::InteractionFeedbackType::Deselect
@ Deselect
An element was deselected.
armarx::viz::ElementOps::pose
DerivedT & pose(Eigen::Matrix4f const &pose)
Definition: ElementOps.h:176
armarx::viz::PoseGizmo::pose
viz::Pose pose
Definition: PoseGizmo.h:33
armarx::viz::PoseGizmo::setLayer
void setLayer(const viz::Layer &layer)
Definition: PoseGizmo.cpp:15
armarx::viz::PoseGizmo::layer
viz::Layer layer
Definition: PoseGizmo.h:30
armarx::viz::PoseGizmo::transform
Eigen::Matrix4f transform
Definition: PoseGizmo.h:28
armarx::viz::Layer
Definition: Layer.h:12
armarx::viz
This file is part of ArmarX.
Definition: ArVizStorage.cpp:418
armarx::viz::ElementOps::enable
DerivedT & enable(InteractionDescription const &interactionDescription)
Definition: ElementOps.h:309