/* $Id$
This file is part of libmspgl
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
+Copyright © 2010 Mikko Rasa, Mikkosoft Productions
Distributed under the LGPL
*/
#ifndef MSP_GL_SCENE_H_
#define MSP_GL_SCENE_H_
-#include <set>
#include "renderable.h"
namespace Msp {
namespace GL {
+/**
+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,
+InstancedScene and OrderedScene.
+*/
class Scene: public Renderable
{
-private:
- struct Compare
- {
- bool operator()(const Renderable *, const Renderable *) const;
- };
-
- std::set<const Renderable *, Compare> renderables;
-
+protected:
+ Scene() { }
public:
- void add(const Renderable &);
- void remove(const Renderable &);
+ virtual ~Scene() { }
- virtual bool has_pass(const Tag &) const { return true; }
- virtual void render(const Tag &tag=Tag()) const;
+ virtual void add(const Renderable &) = 0;
+ virtual void remove(const Renderable &) = 0;
};
} // namespace GL