#include <msp/datafile/collection.h>
#include "animatedobject.h"
#include "camera.h"
+#include "orderedscene.h"
#include "renderer.h"
#include "scene.h"
+#include "simplescene.h"
+#include "zsortedscene.h"
using namespace std;
return false;
}
+Scene::SceneRegistry &Scene::get_scene_registry()
+{
+ static SceneRegistry registry;
+ static bool initialized = false;
+ if(!initialized)
+ {
+ initialized = true;
+ register_type<SimpleScene>("simple");
+ register_type<ZSortedScene>("zsorted");
+ register_type<OrderedScene>("ordered");
+ // TODO OccludedScene requires a collection as a constructor parameter
+ //register_type<OccludedScene>("occluded");
+ }
+ return registry;
+}
+
Scene::Loader::Loader(Scene &s, Collection &c):
DataFile::CollectionObjectLoader<Scene>(s, &c),
obj.owned_data.push_back(anob.release());
}
+
+DataFile::Loader::ActionMap Scene::GenericLoader::shared_actions;
+
+Scene::GenericLoader::GenericLoader(DataFile::Collection &c):
+ coll(c),
+ scene(0),
+ scene_loader(0)
+{
+ set_actions(shared_actions);
+}
+
+Scene::GenericLoader::~GenericLoader()
+{
+ delete scene;
+ delete scene_loader;
+}
+
+void Scene::GenericLoader::init_actions()
+{
+ add("type", &GenericLoader::type);
+}
+
+void Scene::GenericLoader::type(const DataFile::Symbol &sym)
+{
+ get_scene_registry().invoke(sym.name, *this);
+}
+
} // namespace GL
} // namespace Msp