#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"
#include "vector.h"
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];
Scene() { }
public:
virtual ~Scene();
- virtual void add(const Renderable &) = 0;
- virtual void remove(const Renderable &) = 0;
-
- using Renderable::render;
- virtual void render(const Tag & = Tag()) const;
+ virtual void add(Renderable &) = 0;
+ virtual void remove(Renderable &) = 0;
protected:
bool setup_frustum(const Renderer &) const;