fixed background loading of both textures and scenes
[laserbrain_demo] / src / metascene.cc
index 66e0027..399295f 100644 (file)
@@ -4,6 +4,7 @@
 #include "scene.h"
 #include "treestore.h"
 #include "logger.h"
+#include "app.h"
 
 #ifdef WIN32
 #include <malloc.h>
@@ -19,7 +20,7 @@ struct MaterialEdit {
 
 static bool proc_node(MetaScene *mscn, struct ts_node *node);
 static bool proc_scenefile(MetaScene *mscn, struct ts_node *node);
-static bool proc_mtledit(MetaScene *mscn, MaterialEdit *med, struct ts_node *node, TextureSet *texset);
+static bool proc_mtledit(MetaScene *mscn, MaterialEdit *med, struct ts_node *node);
 static void apply_mtledit(Scene *scn, const MaterialEdit &med);
 static void apply_mtledit(Material *mtl, const MaterialEdit &med);
 static struct ts_attr *attr_inscope(struct ts_node *node, const char *name);
@@ -27,10 +28,8 @@ static struct ts_attr *attr_inscope(struct ts_node *node, const char *name);
 static void print_scene_graph(SceneNode *n, int level);
 
 
-MetaScene::MetaScene(SceneSet *sman, TextureSet *tman)
+MetaScene::MetaScene()
 {
-       sceneman = sman;
-       texman = tman;
        walk_mesh = 0;
 }
 
@@ -136,13 +135,13 @@ static bool proc_scenefile(MetaScene *mscn, struct ts_node *node)
                struct ts_node *child = node->child_list;
                while(child) {
                        MaterialEdit medit;
-                       if(proc_mtledit(mscn, &medit, child, mscn->texman)) {
+                       if(proc_mtledit(mscn, &medit, child)) {
                                sdat->mtledit.push_back(medit);
                        }
                        child = child->next;
                }
 
-               Scene *newscn = mscn->sceneman->get(fname);
+               Scene *newscn = sceneman.get(fname);
                /* NOTE: setting all these after get() is not a race condition, because
                 * scene_loaded() which uses this, will only run in our main loop during
                 * SceneSet::update() on the main thread.
@@ -195,7 +194,7 @@ bool MetaScene::scene_loaded(Scene *newscn)
        return true;
 }
 
-static bool proc_mtledit(MetaScene *mscn, MaterialEdit *med, struct ts_node *node, TextureSet *texset)
+static bool proc_mtledit(MetaScene *mscn, MaterialEdit *med, struct ts_node *node)
 {
        if(strcmp(node->name, "mtledit") != 0) {
                return false;
@@ -241,7 +240,7 @@ static bool proc_mtledit(MetaScene *mscn, MaterialEdit *med, struct ts_node *nod
                                // remove
                                med->tex = 0;
                        } else {
-                               med->tex = texset->get_texture(afile->val.str, TEX_2D, &mscn->datamap);
+                               med->tex = texman.get_texture(afile->val.str, TEX_2D, &mscn->datamap);
                        }
                }
                // TODO add more edit modes