]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/occludedscene.cpp
Use a sorted vector in place of set for small data
[libs/gl.git] / source / render / occludedscene.cpp
index 5d85b5d5bf762d43f056d114e383cd613ef67198..bfe17349fd13ee836234c9297ec5476e6039d9f7 100644 (file)
@@ -1,4 +1,4 @@
-#include <algorithm>
+#include <msp/core/algorithm.h>
 #include "camera.h"
 #include "mesh.h"
 #include "occludedscene.h"
@@ -21,14 +21,22 @@ OccludedScene::OccludedScene():
 
 void OccludedScene::add(Renderable &r)
 {
-       renderables.insert(&r);
-       cache_dirty = true;
+       auto i = lower_bound(renderables, &r);
+       if(i==renderables.end() || *i!=&r)
+       {
+               renderables.insert(i, &r);
+               cache_dirty = true;
+       }
 }
 
 void OccludedScene::remove(Renderable &r)
 {
-       renderables.erase(&r);
-       cache_dirty = true;
+       auto i = lower_bound(renderables, &r);
+       if(i!=renderables.end() && *i==&r)
+       {
+               renderables.erase(i);
+               cache_dirty = true;
+       }
 }
 
 void OccludedScene::populate_cache() const