]> git.tdb.fi Git - libs/gl.git/blobdiff - source/scene.cpp
Allow Renderables in a Scene to specify ordering
[libs/gl.git] / source / scene.cpp
index 20399daff01256e35de5bc87dedeec852dd49131..607166d5d32f285e35879ff62134891a9c8e5a42 100644 (file)
@@ -24,10 +24,18 @@ void Scene::remove(const Renderable &r)
 
 void Scene::render(const Tag &tag) const
 {
-       for(set<const Renderable *>::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
+       for(set<const Renderable *, Compare>::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
                if((*i)->has_pass(tag))
                        (*i)->render(tag);
 }
 
+
+bool Scene::Compare::operator()(const Renderable *a, const Renderable *b) const
+{
+       if(a->get_order()!=b->get_order())
+               return a->get_order()<b->get_order();
+       return a<b;
+}
+
 } // namespace GL
 } // namespace Msp