- // extract the walk mesh if necessary
- Scene *wscn;
- if(walkmesh_regexp && (wscn = newscn->extract_nodes(walkmesh_regexp))) {
- // apply all transformations to the meshes
- wscn->apply_xform();
+ Scene *newscn = mscn->sceneman->get(fname);
+ /* NOTE: setting this 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.
+ */
+ newscn->metascn = mscn;
+ mscn->scndata[newscn] = sdat;
+ }
+ return true;
+}
+
+bool MetaScene::scene_loaded(Scene *newscn)
+{
+ SceneData *sdat = (SceneData*)scndata[newscn];
+ if(!sdat) {
+ error_log("MetaScene::scene_loaded called, but corresponding SceneData not found\n");
+ return false;
+ }