X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fobject.cpp;h=b66d2fd117a5b7e0a4bf7465baa76aa1dfacf19a;hb=541bf02f18ad27e8c8101e4255586ddbfef40916;hp=f710a7a9c8c5ced2f2e6647c54a16848a90a7fe7;hpb=25c81b4953dd38993250321b9407ce8b0139cbeb;p=libs%2Fgl.git diff --git a/source/object.cpp b/source/object.cpp index f710a7a9..b66d2fd1 100644 --- a/source/object.cpp +++ b/source/object.cpp @@ -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(&Loader::mesh)); - add("mesh", static_cast(&Loader::mesh)); - add("mesh", static_cast(&Loader::mesh)); - add("mesh", static_cast(&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(&Loader::mesh)); - add("technique", static_cast(&Loader::technique)); - add("technique", static_cast(&Loader::technique)); + add("lod_mesh", &Loader::mesh_lod); } -void Object::Loader::mesh() +void Object::Loader::mesh_inline() { RefPtr 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(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(n)); } -void Object::Loader::technique() +void Object::Loader::technique_inline() { RefPtr tech = new Technique; if(coll)