void OccludedScene::add(Renderable &r)
{
- auto i = lower_bound(renderables, &r);
- if(i==renderables.end() || *i!=&r)
+ auto i = lower_bound(content, &r);
+ if(i==content.end() || *i!=&r)
{
- renderables.insert(i, &r);
+ content.insert(i, &r);
cache_dirty = true;
}
}
void OccludedScene::remove(Renderable &r)
{
- auto i = lower_bound(renderables, &r);
- if(i!=renderables.end() && *i==&r)
+ auto i = lower_bound(content, &r);
+ if(i!=content.end() && *i==&r)
{
- renderables.erase(i);
+ content.erase(i);
cache_dirty = true;
}
}
if(!cache_dirty)
return;
- if(queries.get_size()<renderables.size())
- queries.resize(renderables.size());
- if(occluded_cache.size()<renderables.size())
- occluded_cache.resize(renderables.size());
+ if(queries.get_size()<content.size())
+ queries.resize(content.size());
+ if(occluded_cache.size()<content.size())
+ occluded_cache.resize(content.size());
auto j = occluded_cache.begin();
- for(Renderable *r: renderables)
+ for(Renderable *r: content)
j++->renderable = r;
for(; j!=occluded_cache.end(); ++j)
{
void OccludedScene::render(Renderer &renderer, Tag tag) const
{
- if(renderables.empty())
+ if(content.empty())
return;
populate_cache();
}
// Move all objects within the frustum to the beginning of the array
- for(auto i=occluded_cache.begin(), j=i+renderables.size()-1; i!=j; )
+ for(auto i=occluded_cache.begin(), j=i+content.size()-1; i!=j; )
{
if(i->in_frustum)
++i;
{
QueryPool::Activate activate_query(renderer, queries, i-occluded_cache.begin());
Renderer::Push push2(renderer);
- renderer.transform(Matrix(*i->renderable->get_matrix())
+ renderer.set_matrix(Matrix(*i->renderable->get_matrix())
.translate(i->bounding_sphere->get_center())
.scale(i->bounding_sphere->get_radius()));
bounding_mesh.draw(renderer);