]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/scene.cpp
Add a loader to InstanceArray and make them loadable in scenes
[libs/gl.git] / source / render / scene.cpp
index a9cf8f96b326f76d388fed95187fbacd4dcdfa25..a05e7110ce770def4ab7a49559b507151ed2312a 100644 (file)
@@ -2,6 +2,7 @@
 #include <msp/fs/utils.h>
 #include <msp/strings/format.h>
 #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<Scene>(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<InstanceArray<> > arr = new InstanceArray<>(get_collection().get<GL::Object>(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());