3 This file is part of libmspgl
4 Copyright © 2007 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
9 #include "objectinstance.h"
17 void Scene::add(const Renderable &r)
19 if(const ObjectInstance *oi=dynamic_cast<const ObjectInstance *>(&r))
20 objects[&oi->get_object()].insert(oi);
22 renderables.insert(&r);
25 void Scene::remove(const Renderable &r)
27 if(const ObjectInstance *oi=dynamic_cast<const ObjectInstance *>(&r))
29 map<const Object *, set<const ObjectInstance *> >::iterator i=objects.find(&oi->get_object());
38 renderables.erase(&r);
41 void Scene::render(const Tag &tag) const
43 for(map<const Object *, set<const ObjectInstance *> >::const_iterator i=objects.begin(); i!=objects.end(); ++i)
44 if(i->first->has_pass(tag))
45 i->first->render(i->second.begin(), i->second.end(), tag);
47 for(set<const Renderable *>::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
48 if((*i)->has_pass(tag))