X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Fscene.cpp;h=0f7737227e8da37c4ba69e0260d99f4e893b87c0;hb=016f0f0dd51511f98d0bf398d99199d7dec1543c;hp=75d1859bdd4995d8c42d8c0aa6f4b9ca747d7928;hpb=9813f8711628a0fbe786406e974dc33546dc9cee;p=libs%2Fgl.git diff --git a/source/render/scene.cpp b/source/render/scene.cpp index 75d1859b..0f773722 100644 --- a/source/render/scene.cpp +++ b/source/render/scene.cpp @@ -89,14 +89,16 @@ Scene::GenericLoader::TypeRegistry &Scene::get_scene_registry() } +unsigned Scene::Loader::inline_counter = 0; + Scene::Loader::Loader(Scene &s, Collection &c, ContentMap *m): DataFile::CollectionObjectLoader(s, &c), - content(m), - inst_counter(0) + content(m) { add("object", &Loader::object); add("object", &Loader::object_tagged); add("scene", &Loader::scene); + add("scene", &Loader::scene_inline); } void Scene::Loader::object(const string &n) @@ -108,7 +110,7 @@ void Scene::Loader::object_tagged(const string &n, const string &t) { RefPtr inst = new ObjectInstance(get_collection().get(n)); load_sub(*inst); - get_collection().add(format("%s/%d.inst", FS::basename(get_source()), inst_counter++), inst.get()); + get_collection().add(format("_scene_object_%d.inst", ++inline_counter), inst.get()); if(content && !t.empty()) (*content)[t] = inst.get(); obj.add(*inst.release()); @@ -119,5 +121,13 @@ void Scene::Loader::scene(const string &n) obj.add(get_collection().get(n)); } +void Scene::Loader::scene_inline() +{ + GenericLoader ldr(get_collection()); + load_sub_with(ldr); + Scene *scene = ldr.store_object(get_collection(), format("_scene_%d.scene", ++inline_counter)); + obj.add(*scene); +} + } // namespace GL } // namespace Msp