Ignition Rendering

API Reference

5.1.0
BaseAxisVisual.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Open Source Robotics Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 #ifndef IGNITION_RENDERING_BASE_BASEAXISVISUAL_HH_
18 #define IGNITION_RENDERING_BASE_BASEAXISVISUAL_HH_
19 
23 
24 namespace ignition
25 {
26  namespace rendering
27  {
28  inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
29  //
30  template <class T>
32  public virtual AxisVisual,
33  public virtual T
34  {
35  protected: BaseAxisVisual();
36 
37  public: virtual ~BaseAxisVisual();
38 
39  public: virtual void Init() override;
40 
41  // Documentation inherited.
42  public: virtual void SetLocalScale(
43  const math::Vector3d &_scale) override;
44 
45  // Documentation inherited.
46  public: virtual math::Vector3d LocalScale() const override;
47 
48  // Documentation inherited.
49  public: void ShowAxisHead(bool _b) override;
50  };
51 
53  template <class T>
55  {
56  }
57 
59  template <class T>
61  {
62  }
63 
65  template <class T>
67  {
68  if (this->ChildCount() > 0) {
69  return this->ChildByIndex(0)->LocalScale();
70  }
71  return math::Vector3d::Zero;
72  }
73 
75  template <class T>
77  {
78  for (unsigned int i = 0; i < this->ChildCount(); ++i)
79  this->ChildByIndex(i)->SetLocalScale(_scale.X(),
80  _scale.Y(),
81  _scale.Z());
82  }
83 
85  template <class T>
87  {
88  for (unsigned int i = 0; i < this->ChildCount(); ++i)
89  {
91  this->ChildByIndex(i));
92  arrow->ShowArrowHead(_b);
93  }
94  }
95 
97  template <class T>
99  {
100  T::Init();
101 
102  ArrowVisualPtr xArrow = this->Scene()->CreateArrowVisual();
103  xArrow->SetLocalPosition(0, 0, 0);
104  xArrow->SetLocalRotation(0, IGN_PI / 2, 0);
105  xArrow->SetMaterial("Default/TransRed");
106  this->AddChild(xArrow);
107 
108  ArrowVisualPtr yArrow = this->Scene()->CreateArrowVisual();
109  yArrow->SetLocalPosition(0, 0, 0);
110  yArrow->SetLocalRotation(-IGN_PI / 2, 0, 0);
111  yArrow->SetMaterial("Default/TransGreen");
112  this->AddChild(yArrow);
113 
114  ArrowVisualPtr zArrow = this->Scene()->CreateArrowVisual();
115  zArrow->SetLocalPosition(0, 0, 0);
116  zArrow->SetLocalRotation(0, 0, 0);
117  zArrow->SetMaterial("Default/TransBlue");
118  this->AddChild(zArrow);
119  }
120  }
121  }
122 }
123 #endif
Represents a arrow composite visual.
Definition: ArrowVisual.hh:31
virtual void SetLocalScale(const math::Vector3d &_scale) override
Set the local scale.
Definition: BaseAxisVisual.hh:76
Represents a axis composite visual.
Definition: AxisVisual.hh:31
void ShowAxisHead(bool _b) override
set true to show the axis heads, false otherwise
Definition: BaseAxisVisual.hh:86
virtual void ShowArrowHead(bool _b)=0
set true to show the arrow head, false otherwise
virtual math::Vector3d LocalScale() const override
Get the local scale.
Definition: BaseAxisVisual.hh:66
BaseAxisVisual()
Definition: BaseAxisVisual.hh:54
Manages a single scene-graph. This class updates scene-wide properties and holds the root scene node...
Definition: Scene.hh:49
Definition: BaseAxisVisual.hh:31
T dynamic_pointer_cast(T... args)
virtual ~BaseAxisVisual()
Definition: BaseAxisVisual.hh:60
virtual void Init() override
Definition: BaseAxisVisual.hh:98
static const Vector3 Zero
#define IGN_PI
virtual ArrowVisualPtr CreateArrowVisual()=0
Create new arrow visual. A unique ID and name will automatically be assigned to the visual...