]> git.tdb.fi Git - libs/gl.git/blobdiff - source/scene.h
Change Scene into an abstract base class and add a few subclasses
[libs/gl.git] / source / scene.h
index 329099ea341f31479bbb5e7063c062b226bba49d..92a4a171eb18828e9e6c634f39a7a374edecdac9 100644 (file)
@@ -1,38 +1,32 @@
 /* $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 <map>
-#include <set>
 #include "renderable.h"
 
 namespace Msp {
 namespace GL {
 
-class Object;
-class ObjectInstance;
-
+/**
+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:
-       typedef std::set<const ObjectInstance *> InstanceSet;
-       typedef std::map<const Object *, InstanceSet> ObjectMap;
-       typedef std::set<const Renderable *> RenderableSet;
-
-       ObjectMap objects;
-       RenderableSet renderables;
-
+protected:
+       Scene() { }
 public:
-       void add(const Renderable &);
-       void remove(const Renderable &);
+       virtual ~Scene() { }
 
-       virtual void render(const Tag &tag = Tag()) const;
+       virtual void add(const Renderable &) = 0;
+       virtual void remove(const Renderable &) = 0;
 };
 
 } // namespace GL