Ignition Rendering

API Reference

0.1.0
BaseScene.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_BASESCENE_HH_
18 #define IGNITION_RENDERING_BASE_BASESCENE_HH_
19 
20 #include <string>
23 
24 namespace ignition
25 {
26  namespace rendering
27  {
28  class IGNITION_RENDERING_VISIBLE BaseScene :
29  public std::enable_shared_from_this<BaseScene>,
30  public virtual Scene
31  {
32  protected: BaseScene(unsigned int _id, const std::string &_name);
33 
34  public: virtual ~BaseScene();
35 
36  public: virtual void Load();
37 
38  public: virtual void Init();
39 
40  public: virtual void Fini();
41 
42  public: virtual bool IsLoaded() const;
43 
44  public: virtual bool IsInitialized() const;
45 
46  public: virtual unsigned int Id() const;
47 
48  public: virtual std::string Name() const;
49 
50  public: virtual common::Time SimTime() const;
51 
52  public: virtual void SetSimTime(const common::Time &_time);
53 
54  public: virtual void SetAmbientLight(double _r, double _g, double _b,
55  double _a = 1.0);
56 
57  public: virtual void SetAmbientLight(const math::Color &_color) = 0;
58 
59  public: virtual math::Color BackgroundColor() const;
60 
61  public: virtual void SetBackgroundColor(double _r, double _g, double _b,
62  double _a = 1.0);
63 
64  public: virtual void SetBackgroundColor(const math::Color &_color);
65 
66  public: virtual unsigned int NodeCount() const;
67 
68  public: virtual bool HasNode(ConstNodePtr _node) const;
69 
70  public: virtual bool HasNodeId(unsigned int _id) const;
71 
72  public: virtual bool HasNodeName(const std::string &_name) const;
73 
74  public: virtual NodePtr NodeById(unsigned int _id) const;
75 
76  public: virtual NodePtr NodeByName(const std::string &_name) const;
77 
78  public: virtual NodePtr NodeByIndex(unsigned int _index) const;
79 
80  public: virtual void DestroyNode(NodePtr _node);
81 
82  public: virtual void DestroyNodeById(unsigned int _id);
83 
84  public: virtual void DestroyNodeByName(const std::string &_name);
85 
86  public: virtual void DestroyNodeByIndex(unsigned int _index);
87 
88  public: virtual void DestroyNodes();
89 
90  public: virtual unsigned int LightCount() const;
91 
92  public: virtual bool HasLight(ConstLightPtr _light) const;
93 
94  public: virtual bool HasLightId(unsigned int _id) const;
95 
96  public: virtual bool HasLightName(const std::string &_name) const;
97 
98  public: virtual LightPtr LightById(unsigned int _id) const;
99 
100  public: virtual LightPtr LightByName(const std::string &_name) const;
101 
102  public: virtual LightPtr LightByIndex(unsigned int _index) const;
103 
104  public: virtual void DestroyLight(LightPtr _light);
105 
106  public: virtual void DestroyLightById(unsigned int _id);
107 
108  public: virtual void DestroyLightByName(const std::string &_name);
109 
110  public: virtual void DestroyLightByIndex(unsigned int _index);
111 
112  public: virtual void DestroyLights();
113 
114  public: virtual unsigned int SensorCount() const;
115 
116  public: virtual bool HasSensor(ConstSensorPtr _sensor) const;
117 
118  public: virtual bool HasSensorId(unsigned int _id) const;
119 
120  public: virtual bool HasSensorName(const std::string &_name) const;
121 
122  public: virtual SensorPtr SensorById(unsigned int _id) const;
123 
124  public: virtual SensorPtr SensorByName(const std::string &_name) const;
125 
126  public: virtual SensorPtr SensorByIndex(unsigned int _index) const;
127 
128  public: virtual void DestroySensor(SensorPtr _sensor);
129 
130  public: virtual void DestroySensorById(unsigned int _id);
131 
132  public: virtual void DestroySensorByName(const std::string &_name);
133 
134  public: virtual void DestroySensorByIndex(unsigned int _index);
135 
136  public: virtual void DestroySensors();
137 
138  public: virtual unsigned int VisualCount() const;
139 
140  public: virtual bool HasVisual(ConstVisualPtr _visual) const;
141 
142  public: virtual bool HasVisualId(unsigned int _id) const;
143 
144  public: virtual bool HasVisualName(const std::string &_name) const;
145 
146  public: virtual VisualPtr VisualById(unsigned int _id) const;
147 
148  public: virtual VisualPtr VisualByName(const std::string &_name) const;
149 
150  public: virtual VisualPtr VisualByIndex(unsigned int _index) const;
151 
152  public: virtual void DestroyVisual(VisualPtr _visual);
153 
154  public: virtual void DestroyVisualById(unsigned int _id);
155 
156  public: virtual void DestroyVisualByName(const std::string &_name);
157 
158  public: virtual void DestroyVisualByIndex(unsigned int _index);
159 
160  public: virtual void DestroyVisuals();
161 
162  public: virtual bool MaterialRegistered(const std::string &_name) const;
163 
164  public: virtual MaterialPtr Material(const std::string &_name) const;
165 
166  public: virtual void RegisterMaterial(const std::string &_name,
167  MaterialPtr _material);
168 
169  public: virtual void UnregisterMaterial(const std::string &_name);
170 
171  public: virtual void UnregisterMaterials();
172 
173  public: virtual DirectionalLightPtr CreateDirectionalLight();
174 
175  public: virtual DirectionalLightPtr CreateDirectionalLight(
176  unsigned int _id);
177 
178  public: virtual DirectionalLightPtr CreateDirectionalLight(
179  const std::string &_name);
180 
181  public: virtual DirectionalLightPtr CreateDirectionalLight(
182  unsigned int _id, const std::string &_name);
183 
184  public: virtual PointLightPtr CreatePointLight();
185 
186  public: virtual PointLightPtr CreatePointLight(unsigned int _id);
187 
188  public: virtual PointLightPtr CreatePointLight(const std::string &_name);
189 
190  public: virtual PointLightPtr CreatePointLight(unsigned int _id,
191  const std::string &_name);
192 
193  public: virtual SpotLightPtr CreateSpotLight();
194 
195  public: virtual SpotLightPtr CreateSpotLight(unsigned int _id);
196 
197  public: virtual SpotLightPtr CreateSpotLight(const std::string &_name);
198 
199  public: virtual SpotLightPtr CreateSpotLight(unsigned int _id,
200  const std::string &_name);
201 
202  public: virtual CameraPtr CreateCamera();
203 
204  public: virtual CameraPtr CreateCamera(unsigned int _id);
205 
206  public: virtual CameraPtr CreateCamera(const std::string &_name);
207 
208  public: virtual CameraPtr CreateCamera(unsigned int _id,
209  const std::string &_name);
210 
211  public: virtual VisualPtr CreateVisual();
212 
213  public: virtual VisualPtr CreateVisual(unsigned int _id);
214 
215  public: virtual VisualPtr CreateVisual(const std::string &_name);
216 
217  public: virtual VisualPtr CreateVisual(unsigned int _id,
218  const std::string &_name);
219 
220  public: virtual ArrowVisualPtr CreateArrowVisual();
221 
222  public: virtual ArrowVisualPtr CreateArrowVisual(unsigned int _id);
223 
224  public: virtual ArrowVisualPtr CreateArrowVisual(
225  const std::string &_name);
226 
227  public: virtual ArrowVisualPtr CreateArrowVisual(unsigned int _id,
228  const std::string &_name);
229 
230  public: virtual AxisVisualPtr CreateAxisVisual();
231 
232  public: virtual AxisVisualPtr CreateAxisVisual(unsigned int _id);
233 
234  public: virtual AxisVisualPtr CreateAxisVisual(const std::string &_name);
235 
236  public: virtual AxisVisualPtr CreateAxisVisual(unsigned int _id,
237  const std::string &_name);
238 
239  public: virtual GeometryPtr CreateBox();
240 
241  public: virtual GeometryPtr CreateCone();
242 
243  public: virtual GeometryPtr CreateCylinder();
244 
245  public: virtual GeometryPtr CreatePlane();
246 
247  public: virtual GeometryPtr CreateSphere();
248 
249  public: virtual MeshPtr CreateMesh(const std::string &_meshName);
250 
251  public: virtual MeshPtr CreateMesh(const common::Mesh *_mesh);
252 
253  public: virtual MeshPtr CreateMesh(const MeshDescriptor &_desc);
254 
255  // Documentation inherited.
256  public: virtual GridPtr CreateGrid();
257 
258  public: virtual MaterialPtr CreateMaterial(const std::string &_name = "");
259 
260  public: virtual MaterialPtr CreateMaterial(
261  const common::Material &_material);
262 
263  public: virtual RenderTexturePtr CreateRenderTexture();
264 
265  // Documentation inherited.
266  public: virtual RenderWindowPtr CreateRenderWindow();
267 
268  public: virtual RayQueryPtr CreateRayQuery();
269 
270  public: virtual void PreRender();
271 
272  public: virtual void Clear();
273 
274  public: virtual void Destroy();
275 
276  protected: virtual unsigned int CreateObjectId();
277 
278  protected: virtual std::string CreateObjectName(unsigned int _id,
279  const std::string &_prefix);
280 
281  protected: virtual bool RegisterLight(LightPtr _light);
282 
283  protected: virtual bool RegisterSensor(SensorPtr _vensor);
284 
285  protected: virtual bool RegisterVisual(VisualPtr _visual);
286 
287  protected: virtual DirectionalLightPtr CreateDirectionalLightImpl(
288  unsigned int _id, const std::string &_name) = 0;
289 
290  protected: virtual PointLightPtr CreatePointLightImpl(unsigned int _id,
291  const std::string &_name) = 0;
292 
293  protected: virtual SpotLightPtr CreateSpotLightImpl(unsigned int _id,
294  const std::string &_name) = 0;
295 
296  protected: virtual CameraPtr CreateCameraImpl(unsigned int _id,
297  const std::string &_name) = 0;
298 
299  protected: virtual VisualPtr CreateVisualImpl(unsigned int _id,
300  const std::string &_name) = 0;
301 
302  protected: virtual ArrowVisualPtr CreateArrowVisualImpl(unsigned int _id,
303  const std::string &_name) = 0;
304 
305  protected: virtual AxisVisualPtr CreateAxisVisualImpl(unsigned int _id,
306  const std::string &_name) = 0;
307 
308  protected: virtual GeometryPtr CreateBoxImpl(unsigned int _id,
309  const std::string &_name) = 0;
310 
311  protected: virtual GeometryPtr CreateConeImpl(unsigned int _id,
312  const std::string &_name) = 0;
313 
314  protected: virtual GeometryPtr CreateCylinderImpl(unsigned int _id,
315  const std::string &_name) = 0;
316 
317  protected: virtual GeometryPtr CreatePlaneImpl(unsigned int _id,
318  const std::string &_name) = 0;
319 
320  protected: virtual GeometryPtr CreateSphereImpl(unsigned int _id,
321  const std::string &_name) = 0;
322 
323  protected: virtual MeshPtr CreateMeshImpl(unsigned int _id,
324  const std::string &_name,
325  const MeshDescriptor &_desc) = 0;
326 
331  protected: virtual GridPtr CreateGridImpl(unsigned int _id,
332  const std::string &_name) = 0;
333 
334  protected: virtual MaterialPtr CreateMaterialImpl(unsigned int _id,
335  const std::string &_name) = 0;
336 
337  protected: virtual RenderTexturePtr CreateRenderTextureImpl(
338  unsigned int _id, const std::string &_name) = 0;
339 
345  protected: virtual RenderWindowPtr CreateRenderWindowImpl(
346  unsigned int _id, const std::string &_name) = 0;
347 
348  protected: virtual RayQueryPtr CreateRayQueryImpl(
349  unsigned int _id, const std::string &_name) = 0;
350 
351  protected: virtual LightStorePtr Lights() const = 0;
352 
353  protected: virtual SensorStorePtr Sensors() const = 0;
354 
355  protected: virtual VisualStorePtr Visuals() const = 0;
356 
357  protected: virtual MaterialMapPtr Materials() const = 0;
358 
359  protected: virtual bool LoadImpl() = 0;
360 
361  protected: virtual bool InitImpl() = 0;
362 
363  private: virtual void CreateNodeStore();
364 
365  private: virtual void CreateMaterials();
366 
367  protected: unsigned int id;
368 
369  protected: std::string name;
370 
371  protected: common::Time simTime;
372 
373  protected: bool loaded;
374 
375  protected: bool initialized;
376 
378  protected: math::Color backgroundColor;
379 
380  private: unsigned int nextObjectId;
381 
382  private: NodeStorePtr nodes;
383  };
384  }
385 }
386 #endif
bool loaded
Definition: BaseScene.hh:373
bool initialized
Definition: BaseScene.hh:375
math::Color backgroundColor
Scene background color. Default should be black.
Definition: BaseScene.hh:378
Describes how a Mesh should be loaded.
Definition: MeshDescriptor.hh:38
common::Time simTime
Definition: BaseScene.hh:371
STL class.
Manages a single scene-graph. This class updates scene-wide properties and holds the root scene node...
Definition: Scene.hh:44
std::string name
Definition: BaseScene.hh:369
Definition: BaseScene.hh:28
unsigned int id
Definition: BaseScene.hh:367
Definition: ArrowVisual.hh:22
Represents a surface material of a Geometry.
Definition: Material.hh:34