]> git.tdb.fi Git - libs/gl.git/blobdiff - source/scene.h
Minor fixes, courtesy of Apple's compiler
[libs/gl.git] / source / scene.h
index f4e128105f75535d8398f06267924cfb50f8568e..10b1ab650b3322fc078ded30be7115bac689f6f5 100644 (file)
@@ -1,31 +1,40 @@
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_GL_SCENE_H_
 #define MSP_GL_SCENE_H_
 
-#include <set>
+#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.  Examples of available Scene types are SimpleScene,
+InstancedScene and OrderedScene.
+*/
 class Scene: public Renderable
 {
-private:
-       std::set<const Renderable *> renderables;
+protected:
+       std::list<Culler *> cullers;
 
+       Scene() { }
 public:
-       void add(const Renderable &);
-       void remove(const Renderable &);
+       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;
 
-       virtual bool has_pass(const std::string &) const { return true; }
-       virtual void render() const;
-       virtual void render(const std::string &) const;
+protected:
+       virtual void setup_cullers(const Renderer &) const;
+       virtual bool cull(const Renderer &, const Renderable &) const;
 };
 
 } // namespace GL