X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fsimplescene.cpp;h=d1fd3c1cea2a4c4ad0349fb1a30017cfa2b52920;hp=4ccc714b79d7eefbe898a43677c0284a81e0a2ff;hb=94ee5852b42b05559069596e205dc2f000e6153f;hpb=5592a115f0126ea8de1245e091338a8735b79d0e diff --git a/source/simplescene.cpp b/source/simplescene.cpp index 4ccc714b..d1fd3c1c 100644 --- a/source/simplescene.cpp +++ b/source/simplescene.cpp @@ -4,13 +4,14 @@ namespace Msp { namespace GL { -void SimpleScene::add(const Renderable &r) +void SimpleScene::add(Renderable &r) { - renderables.insert(&r); - cache.clear(); + // Add to cache as well if the cache is valid + if(renderables.insert(&r).second && !cache.empty()) + cache.push_back(&r); } -void SimpleScene::remove(const Renderable &r) +void SimpleScene::remove(Renderable &r) { renderables.erase(&r); cache.clear(); @@ -25,14 +26,14 @@ void SimpleScene::populate_cache() const } } -void SimpleScene::setup_frame() const +void SimpleScene::setup_frame(Renderer &renderer) { populate_cache(); for(RenderableArray::const_iterator i=cache.begin(); i!=cache.end(); ++i) - (*i)->setup_frame(); + (*i)->setup_frame(renderer); } -void SimpleScene::finish_frame() const +void SimpleScene::finish_frame() { for(RenderableArray::const_iterator i=cache.begin(); i!=cache.end(); ++i) (*i)->finish_frame();