]> git.tdb.fi Git - libs/gl.git/blobdiff - source/scene.h
Fix various issues with constant condition elimination
[libs/gl.git] / source / scene.h
index 9e2da3dfe97b620bf0f9008dc36ca2b22fbe7532..639a467fa849cb526c19ac31744b957f820af7ea 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef MSP_GL_SCENE_H_
 #define MSP_GL_SCENE_H_
 
-#include <list>
+#include <vector>
 #include <msp/datafile/objectloader.h>
 #include "matrix.h"
 #include "renderable.h"
@@ -21,14 +21,24 @@ public:
        class Loader: public DataFile::CollectionObjectLoader<Scene>
        {
        public:
-               Loader(Scene &, Collection &);
+               typedef std::map<std::string, Renderable *> ContentMap;
+
+       private:
+               ContentMap *content;
 
+       public:
+               Loader(Scene &, Collection &);
+               Loader(Scene &, Collection &, ContentMap &);
        private:
+               void init();
+
                void object(const std::string &);
+               void object_tagged(const std::string &, const std::string &);
        };
 
 protected:
-       std::list<Renderable *> owned_data;
+       // XXX If a loaded renderable is removed from the scene it needs to be removed from here as well
+       std::vector<Renderable *> owned_data;
        mutable Matrix culling_matrix;
        mutable Vector4 frustum_edges[6];
 
@@ -39,8 +49,8 @@ private:
 public:
        virtual ~Scene();
 
-       virtual void add(const Renderable &) = 0;
-       virtual void remove(const Renderable &) = 0;
+       virtual void add(Renderable &) = 0;
+       virtual void remove(Renderable &) = 0;
 
 protected:
        bool setup_frustum(const Renderer &) const;