#ifndef MSP_GL_SCENE_H_
#define MSP_GL_SCENE_H_
+#include <list>
#include "renderable.h"
namespace Msp {
namespace GL {
+class Culler;
+
/**
Scenes are containers for other Renderables. This is a base class that can't
-be instantiated. At the moment the available Scene types are SimpleScene,
+be instantiated. Examples of available Scene types are SimpleScene,
InstancedScene and OrderedScene.
*/
class Scene: public Renderable
{
protected:
+ std::list<Culler *> cullers;
+
Scene() { }
public:
virtual ~Scene() { }
virtual void add(const Renderable &) = 0;
virtual void remove(const Renderable &) = 0;
+ void add_culler(Culler &);
+ void remove_culler(Culler &);
+
using Renderable::render;
virtual void render(const Tag & = Tag()) const;
+
+protected:
+ virtual void setup_cullers(const Renderer &) const;
+ virtual bool cull(const Renderer &, const Renderable &) const;
};
} // namespace GL