1 #include <msp/core/algorithm.h>
3 #include "orderedscene.h"
9 void OrderedScene::add(Renderable &r)
11 content.push_back(&r);
14 void OrderedScene::remove(Renderable &r)
16 auto end = std::remove(content.begin(), content.end(), &r);
17 content.erase(end, content.end());
20 void OrderedScene::prepend(Renderable &r)
22 content.insert(content.begin(), &r);
25 void OrderedScene::insert(unsigned index, Renderable &r)
27 auto i = content.begin();
28 for(; (i!=content.end() && index); ++i, --index) ;
29 content.insert(i, &r);
32 void OrderedScene::insert_after(Renderable &after, Renderable &r)
34 auto i = find(content, &after);
35 content.insert(i, &r);
38 void OrderedScene::setup_frame(Renderer &renderer)
40 for(Renderable *r: content)
41 r->setup_frame(renderer);
44 void OrderedScene::finish_frame()
46 for(Renderable *r: content)
50 void OrderedScene::render(Renderer &renderer, Tag tag) const
52 if(const Camera *camera = renderer.get_camera())
54 for(Renderable *r: content)
55 if(camera->is_in_frustum(*r))
56 r->render(renderer, tag);
60 for(Renderable *r: content)
61 r->render(renderer, tag);