]> git.tdb.fi Git - libs/gl.git/blob - source/render/simplescene.cpp
Redesign InstanceArray
[libs/gl.git] / source / render / simplescene.cpp
1 #include <msp/core/algorithm.h>
2 #include "camera.h"
3 #include "renderer.h"
4 #include "simplescene.h"
5
6 namespace Msp {
7 namespace GL {
8
9 void SimpleScene::add(Renderable &r)
10 {
11         auto i = lower_bound(content, &r);
12         if(i==content.end() || *i!=&r)
13                 content.insert(i, &r);
14 }
15
16 void SimpleScene::remove(Renderable &r)
17 {
18         auto i = find(content, &r);
19         if(i!=content.end())
20                 content.erase(i);
21 }
22
23 void SimpleScene::setup_frame(Renderer &renderer)
24 {
25         for(Renderable *r: content)
26                 r->setup_frame(renderer);
27 }
28
29 void SimpleScene::finish_frame()
30 {
31         for(Renderable *r: content)
32                 r->finish_frame();
33 }
34
35 void SimpleScene::render(Renderer &renderer, Tag tag) const
36 {
37         if(const Camera *camera = renderer.get_camera())
38         {
39                 for(Renderable *r: content)
40                         if(camera->is_in_frustum(*r))
41                                 r->render(renderer, tag);
42         }
43         else
44         {
45                 for(Renderable *r: content)
46                         r->render(renderer, tag);
47         }
48 }
49
50 } // namespace GL
51 } // namespace Msp