17 #ifndef GZ_RENDERING_BASE_BASEARROWVISUAL_HH_
18 #define GZ_RENDERING_BASE_BASEARROWVISUAL_HH_
22 #include <gz/common/MeshManager.hh>
31 inline namespace GZ_RENDERING_VERSION_NAMESPACE {
45 protected:
virtual void Destroy()
override;
69 protected:
virtual void Init()
override;
72 protected:
bool rotationVisible =
false;
91 while (this->ChildCount() > 0u)
93 auto visual = std::dynamic_pointer_cast<Visual>(this->ChildByIndex(0));
106 return std::dynamic_pointer_cast<Visual>(this->ChildByIndex(0));
113 return std::dynamic_pointer_cast<Visual>(this->ChildByIndex(1));
120 return std::dynamic_pointer_cast<Visual>(this->ChildByIndex(2));
127 this->Head()->SetVisible(_b);
134 this->Shaft()->SetVisible(_b);
141 this->Rotation()->SetVisible(_b);
142 this->rotationVisible = _b;
149 T::SetVisible(_visible);
155 this->Rotation()->SetVisible(this->rotationVisible && _visible);
165 cone->AddGeometry(this->
Scene()->CreateCone());
166 cone->SetOrigin(0, 0, -0.5);
167 cone->SetLocalPosition(0, 0, 0);
168 cone->SetLocalScale(0.1, 0.1, 0.25);
169 this->AddChild(cone);
172 cylinder->AddGeometry(this->
Scene()->CreateCylinder());
173 cylinder->SetOrigin(0, 0, 0.5);
174 cylinder->SetLocalPosition(0, 0, 0);
175 cylinder->SetLocalScale(0.05, 0.05, 0.5);
176 this->AddChild(cylinder);
180 if (!meshMgr->
HasMesh(rotMeshName))
181 meshMgr->
CreateTube(rotMeshName, 0.070f, 0.075f, 0.01f, 1, 32);
184 rotationVis->AddGeometry(this->
Scene()->CreateMesh(rotMeshName));
185 rotationVis->SetOrigin(0, 0, -0.125);
186 rotationVis->SetLocalPosition(0, 0, 0);
187 rotationVis->SetVisible(this->rotationVisible);
188 this->AddChild(rotationVis);
190 this->SetOrigin(0, 0, -0.5);