]> git.tdb.fi Git - libs/gl.git/blob - source/instancescene.cpp
fb99dda881f83ca8630a4cfcba36e42b3ca5a51a
[libs/gl.git] / source / instancescene.cpp
1 /* $Id$
2
3 This file is part of libmspgl
4 Copyright © 2007-2008, 2010-2011  Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #include "object.h"
9 #include "objectinstance.h"
10 #include "instancescene.h"
11 #include "renderer.h"
12
13 namespace Msp {
14 namespace GL {
15
16 void InstanceScene::add(const Renderable &r)
17 {
18         renderables[r.get_instance_key()].insert(&r);
19 }
20
21 void InstanceScene::remove(const Renderable &r)
22 {
23         InstanceMap::iterator i = renderables.find(r.get_instance_key());
24         if(i!=renderables.end())
25         {
26                 i->second.erase(&r);
27                 if(i->second.empty())
28                         renderables.erase(i);
29         }
30 }
31
32 void InstanceScene::render(Renderer &renderer, const Tag &tag) const
33 {
34         for(InstanceMap::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
35                 for(RenderableSet::const_iterator j=i->second.begin(); j!=i->second.end(); ++j)
36                         (*j)->render(renderer, tag);
37 }
38
39 } // namespace GL
40 } // namespace Msp