#include <stdio.h>
#include <assert.h>
+#include <string>
#include <vector>
#include <map>
#include <gmath/gmath.h>
struct LoaderData {
const aiScene *aiscn;
+ std::string fname;
std::map<std::string, SceneNode*> node_by_name;
std::map<aiMesh*, Mesh*> mesh_by_aimesh;
};
LoaderData *ldata = new LoaderData;
ldata->aiscn = aiscn;
+ ldata->fname = std::string(fname);
loader_data = (void*)ldata;
}
LoaderData *ldata = (LoaderData*)loader_data;
const aiScene *aiscn = ldata->aiscn;
+ fname = ldata->fname.c_str();
// load all meshes
for(unsigned int i=0; i<aiscn->mNumMeshes; i++) {
}
}
+ info_log("loaded scene file: %s, %d meshes\n", fname, (int)meshes.size());
+
aiReleaseImport(aiscn);
delete ldata;
loader_data = 0;
- info_log("loaded scene file: %s, %d meshes\n", fname, (int)meshes.size());
nodes->update(0);
}
return true;
memcpy(m[0], &aim, 16 * sizeof(float));
return transpose(m);
}
+
+
+// --- SceneSet ---
+
+SceneSet::SceneSet()
+ : DataSet<Scene*>(create_scene, load_scene, done_scene, free_scene)
+{
+}
+
+Scene *SceneSet::create_scene()
+{
+ return new Scene;
+}
+
+bool SceneSet::load_scene(Scene *scn, const char *fname)
+{
+ return scn->load(fname, SCNLOAD_FLIPTEX | SCNLOAD_STAGE_IO);
+}
+
+bool SceneSet::done_scene(Scene *scn)
+{
+ return scn->load(0, SCNLOAD_STAGE_GL);
+}
+
+void SceneSet::free_scene(Scene *scn)
+{
+ delete scn;
+}