Gazebo Rendering

API Reference

9.0.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 GZ_RENDERING_BASE_BASEAXISVISUAL_HH_
18#define GZ_RENDERING_BASE_BASEAXISVISUAL_HH_
19
22#include "gz/rendering/Scene.hh"
23
24namespace gz
25{
26 namespace rendering
27 {
28 inline namespace GZ_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 protected: virtual void Destroy() override;
43
44 // Documentation inherited.
45 public: virtual void SetLocalScale(
46 const math::Vector3d &_scale) override;
47
48 // Documentation inherited.
49 public: virtual math::Vector3d LocalScale() const override;
50
51 // Documentation inherited.
52 public: void ShowAxisHead(bool _b) override;
53
54 // Documentation inherited.
55 public: void ShowAxisHead(unsigned int _axis, bool _b) override;
56
57 // Documentation inherited.
58 public: virtual void SetVisible(bool _visible) override;
59 };
60
62 template <class T>
66
68 template <class T>
72
74 template <class T>
76 {
77 for (unsigned int i = 0; i < this->ChildCount(); ++i)
78 {
80 this->ChildByIndex(i));
81 if (arrow)
82 {
83 arrow->Destroy();
84 }
85 }
86 T::Destroy();
87 }
88
90 template <class T>
92 {
93 if (this->ChildCount() > 0) {
94 return this->ChildByIndex(0)->LocalScale();
95 }
97 }
98
100 template <class T>
102 {
103 for (unsigned int i = 0; i < this->ChildCount(); ++i)
104 this->ChildByIndex(i)->SetLocalScale(_scale.X(),
105 _scale.Y(),
106 _scale.Z());
107 }
108
110 template <class T>
112 {
113 for (unsigned int i = 0; i < this->ChildCount(); ++i)
114 {
116 this->ChildByIndex(i));
117 if (arrow)
118 {
119 arrow->ShowArrowHead(_b);
120 }
121 }
122 }
123
125 template <class T>
126 void BaseAxisVisual<T>::ShowAxisHead(unsigned int _axis, bool _b)
127 {
129 this->ChildByIndex(_axis));
130 if (arrow)
131 {
132 arrow->ShowArrowHead(_b);
133 }
134 }
135
137 template <class T>
139 {
140 T::Init();
141
142 ArrowVisualPtr xArrow = this->Scene()->CreateArrowVisual();
143 xArrow->SetLocalPosition(0, 0, 0);
144 xArrow->SetLocalRotation(0, GZ_PI / 2, 0);
145 xArrow->SetMaterial("Default/TransRed");
146 this->AddChild(xArrow);
147
148 ArrowVisualPtr yArrow = this->Scene()->CreateArrowVisual();
149 yArrow->SetLocalPosition(0, 0, 0);
150 yArrow->SetLocalRotation(-GZ_PI / 2, 0, 0);
151 yArrow->SetMaterial("Default/TransGreen");
152 this->AddChild(yArrow);
153
154 ArrowVisualPtr zArrow = this->Scene()->CreateArrowVisual();
155 zArrow->SetLocalPosition(0, 0, 0);
156 zArrow->SetLocalRotation(0, 0, 0);
157 zArrow->SetMaterial("Default/TransBlue");
158 this->AddChild(zArrow);
159 }
160
162 template <class T>
164 {
165 T::SetVisible(_visible);
166
167 for (unsigned int i = 0; i < this->ChildCount(); ++i)
168 {
170 this->ChildByIndex(i));
171 if (arrow != nullptr)
172 arrow->SetVisible(_visible);
173 }
174 }
175 }
176 }
177}
178#endif