X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fscene.cc;h=683c9ecf221814528c16731d3ab867a3b919862b;hb=12e70d8b9c2d5c81500d7631b9db5d17a34fe918;hp=f116150396068e9a841a025dadbd13a3610a095b;hpb=d4d7f73284783d2a50d71014789d196bef7d0e0e;p=laserbrain_demo diff --git a/src/scene.cc b/src/scene.cc index f116150..683c9ec 100644 --- a/src/scene.cc +++ b/src/scene.cc @@ -1,22 +1,16 @@ #include #include "scene.h" #include "objmesh.h" +#include "app.h" static void destroy_node_tree(SceneNode *n); -Scene::Scene(TextureSet *tset) +Scene::Scene() { + metascn = 0; nodes = 0; walk_mesh = 0; - - if(tset) { - texset = tset; - own_texset = false; - } else { - texset = new TextureSet; - own_texset = true; - } } Scene::~Scene() @@ -41,11 +35,6 @@ void Scene::destroy() delete objects[i]; } objects.clear(); - - if(own_texset) { - delete texset; - } - texset = 0; } static void destroy_node_tree(SceneNode *n) @@ -63,12 +52,6 @@ static void destroy_node_tree(SceneNode *n) bool Scene::merge(Scene *scn) { - if(texset != scn->texset) { - // TODO handle this properly - error_log("for now only able to merge scenes using the same texture set\n"); - return false; - } - if(walk_mesh) { if(scn->walk_mesh) { walk_mesh->append(*scn->walk_mesh); @@ -199,6 +182,8 @@ static void find_nodes_rec(std::list *res, SceneNode *tree, const st Scene *Scene::extract_nodes(const char *qstr) { + if(!nodes) return 0; + std::regex re{qstr}; std::list nodelist; @@ -207,7 +192,7 @@ Scene *Scene::extract_nodes(const char *qstr) return 0; } - Scene *res = new Scene(texset); + Scene *res = new Scene; for(SceneNode *n : nodelist) {