fixed background loading of both textures and scenes
[laserbrain_demo] / src / scene.h
index ece454e..1cf8dcc 100644 (file)
@@ -6,6 +6,8 @@
 #include "mesh.h"
 #include "snode.h"
 #include "texture.h"
+#include "dataset.h"
+#include "datamap.h"
 
 enum {
        SCNLOAD_FLIPYZ = 1,
@@ -15,11 +17,13 @@ enum {
        SCNLOAD_STAGE_GL = 0x8000
 };
 
-class Scene {
-private:
-       bool own_texset;
+class MetaScene;
 
+class Scene {
 public:
+       MetaScene *metascn;
+       DataMap datamap;
+
        // meshes objects and nodes are owned by Scene
        std::vector<Mesh*> meshes;
        std::vector<Object*> objects;
@@ -30,7 +34,7 @@ public:
        TextureSet *texset;     // only owned by Scene if own_texset is true
        void *loader_data;
 
-       explicit Scene(TextureSet *tset = 0);
+       explicit Scene();
        ~Scene();
 
        Scene(const Scene &rhs) = delete;
@@ -72,4 +76,15 @@ public:
        void draw() const;
 };
 
+class SceneSet : public DataSet<Scene*> {
+private:
+       static Scene *create_scene();
+       static bool load_scene(Scene *scn, const char *fname);
+       static bool done_scene(Scene *scn);
+       static void free_scene(Scene *scn);
+
+public:
+       SceneSet();
+};
+
 #endif // SCENE_H_