X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Frender%2Fscene.cpp;fp=source%2Frender%2Fscene.cpp;h=a05e7110ce770def4ab7a49559b507151ed2312a;hp=a9cf8f96b326f76d388fed95187fbacd4dcdfa25;hb=85d86a0d7cddce83578629e5817b6e1b50061540;hpb=f1e296bb2442dfbea12e7b38a97cc152aa34569c diff --git a/source/render/scene.cpp b/source/render/scene.cpp index a9cf8f96..a05e7110 100644 --- a/source/render/scene.cpp +++ b/source/render/scene.cpp @@ -2,6 +2,7 @@ #include #include #include "camera.h" +#include "instancearray.h" #include "objectinstance.h" #include "occludedscene.h" #include "orderedscene.h" @@ -37,12 +38,21 @@ Scene::Loader::Loader(Scene &s, Collection &c, ContentMap *m): DataFile::CollectionObjectLoader(s, &c), content(m) { + add("array", &Loader::array); add("object", &Loader::object); add("object", &Loader::object_tagged); add("scene", &Loader::scene); add("scene", &Loader::scene_inline); } +void Scene::Loader::array(const string &n) +{ + RefPtr > arr = new InstanceArray<>(get_collection().get(n)); + load_sub(*arr); + get_collection().add(format("_scene_array_%d.array", ++inline_counter), arr.get()); + obj.add(*arr.release()); +} + void Scene::Loader::object(const string &n) { object_tagged(n, string());