Lugdunum  0.1.0
Scene.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <list>
4 #include <string>
5 
11 
12 namespace lug {
13 namespace Graphics {
14 
15 namespace Builder {
16 class Scene;
17 } // Builder
18 
19 namespace Render {
20 namespace Camera {
21 class Camera;
22 } // Camera
23 
24 class Queue;
25 class View;
26 } // Render
27 
28 namespace Scene {
29 
31  friend class Builder::Scene;
32 
33 public:
34  Scene() = default;
35 
36  Scene(const Scene&) = delete;
37  Scene(Scene&&) = delete;
38 
39  Scene& operator=(const Scene&) = delete;
40  Scene& operator=(Scene&&) = delete;
41 
42  ~Scene() = default;
43 
44  Node* createSceneNode(const std::string& name);
45 
46  void setSkyBox(Resource::SharedPtr<Render::SkyBox> skyBox);
47 
48  Node& getRoot();
49  const Node& getRoot() const;
50 
51  Node* getSceneNode(const std::string& name);
52  const Node* getSceneNode(const std::string& name) const;
53  const Resource::SharedPtr<Render::SkyBox> getSkyBox() const;
54 
55  void fetchVisibleObjects(const Renderer& renderer, const Render::View& renderView, const Render::Camera::Camera& camera, Render::Queue& renderQueue) const;
56 
57 private:
58  Scene(const std::string& name);
59 
60 private:
62 
64 
65  std::list<Node> _nodes;
66 };
67 
69 
70 } // Scene
71 } // Graphics
72 } // lug
#define LUG_GRAPHICS_API
Definition: Export.hpp:11
Dummy class for a shared pointer.
Definition: Resource.hpp:66
Class for resource.
Definition: Resource.hpp:17
std::list< Node > _nodes
Definition: Scene.hpp:65