]> git.tdb.fi Git - libs/gl.git/blob - source/render/orderedscene.h
Convert Lighting to use shared actions
[libs/gl.git] / source / render / orderedscene.h
1 #ifndef MSP_GL_ORDEREDSCENE_H_
2 #define MSP_GL_ORDEREDSCENE_H_
3
4 #include <list>
5 #include "scene.h"
6
7 namespace Msp {
8 namespace GL {
9
10 /**
11 A scene that renders its contents in a specific order.  Inserting Renderables
12 in the middle and removing them are O(N) operations.
13 */
14 class OrderedScene: public Scene
15 {
16 public:
17         using Scene::Loader;
18
19 private:
20         typedef std::list<Renderable *> RenderableList;
21
22         RenderableList renderables;
23
24 public:
25         virtual void add(Renderable &);
26         virtual void remove(Renderable &);
27         void prepend(Renderable &);
28         void insert(unsigned, Renderable &);
29         void insert_after(Renderable &, Renderable &);
30
31         virtual void setup_frame(Renderer &);
32         virtual void finish_frame();
33
34         using Scene::render;
35         virtual void render(Renderer &, Tag = Tag()) const;
36 };
37
38 } // namespace GL
39 } // namespace Msp
40
41 #endif