]> git.tdb.fi Git - libs/gl.git/blobdiff - source/object.cpp
Add a method to get the mesh of an Object
[libs/gl.git] / source / object.cpp
index f710a7a9c8c5ced2f2e6647c54a16848a90a7fe7..b66d2fd117a5b7e0a4bf7465baa76aa1dfacf19a 100644 (file)
@@ -43,6 +43,14 @@ void Object::set_mesh(unsigned i, const Mesh *m)
        meshes[i].keep();
 }
 
+const Mesh *Object::get_mesh(unsigned i) const
+{
+       if(i>=meshes.size())
+               return 0;
+
+       return meshes[i].get();
+}
+
 void Object::set_technique(const Technique *t)
 {
        technique = t;
@@ -119,24 +127,25 @@ void Object::Loader::init()
 {
        allow_pointer_reload = false;
 
-       add("mesh",     static_cast<void (Loader::*)()>(&Loader::mesh));
-       add("mesh",     static_cast<void (Loader::*)(unsigned)>(&Loader::mesh));
-       add("mesh",     static_cast<void (Loader::*)(const std::string &)>(&Loader::mesh));
-       add("mesh",     static_cast<void (Loader::*)(unsigned, const std::string &)>(&Loader::mesh));
+       add("mesh",     &Loader::mesh_inline);
+       add("mesh",     &Loader::mesh_inline_lod);
+       add("mesh",     &Loader::mesh);
+       add("mesh",     &Loader::mesh_lod);
+       add("technique", &Loader::technique_inline);
+       add("technique", &Loader::technique);
+
        // Deprecated alias, will be removed
-       add("lod_mesh", static_cast<void (Loader::*)(unsigned, const std::string &)>(&Loader::mesh));
-       add("technique", static_cast<void (Loader::*)()>(&Loader::technique));
-       add("technique", static_cast<void (Loader::*)(const std::string &)>(&Loader::technique));
+       add("lod_mesh", &Loader::mesh_lod);
 }
 
-void Object::Loader::mesh()
+void Object::Loader::mesh_inline()
 {
        RefPtr<Mesh> msh = new Mesh;
        load_sub(*msh);
        obj.meshes.front() = msh;
 }
 
-void Object::Loader::mesh(unsigned l)
+void Object::Loader::mesh_inline_lod(unsigned l)
 {
        if(l>obj.meshes.size())
                throw InvalidParameterValue("LODs must be continuous");
@@ -154,12 +163,12 @@ void Object::Loader::mesh(const std::string &n)
        obj.set_mesh(get_collection().get<Mesh>(n));
 }
 
-void Object::Loader::mesh(unsigned l, const string &n)
+void Object::Loader::mesh_lod(unsigned l, const string &n)
 {
        obj.set_mesh(l, get_collection().get<Mesh>(n));
 }
 
-void Object::Loader::technique()
+void Object::Loader::technique_inline()
 {
        RefPtr<Technique> tech = new Technique;
        if(coll)