]> git.tdb.fi Git - libs/gl.git/blobdiff - source/object.cpp
Add class Renderable
[libs/gl.git] / source / object.cpp
index 7250caf8f9bc22272c4e859882ee17229298f97a..dba9774e7531fa0f7549f56341ed08d19646a6be 100644 (file)
@@ -48,14 +48,24 @@ const ObjectPass &Object::get_pass(const string &pn) const
        return i->second;
 }
 
-void Object::render(const ObjectInstance *inst) const
+void Object::render() const
 {
-       render(*normal_pass, inst);
+       render(*normal_pass, 0);
 }
 
-void Object::render(const string &pn, const ObjectInstance *inst) const
+void Object::render(const ObjectInstance &inst) const
 {
-       render(get_pass(pn), inst);
+       render(*normal_pass, &inst);
+}
+
+void Object::render(const string &pn) const
+{
+       render(get_pass(pn), 0);
+}
+
+void Object::render(const string &pn, const ObjectInstance &inst) const
+{
+       render(get_pass(pn), &inst);
 }
 
 void Object::render(const list<const ObjectInstance *> &insts) const
@@ -164,7 +174,7 @@ Object::Loader::~Loader()
 void Object::Loader::lod_mesh(unsigned l, const string &n)
 {
        obj.meshes.resize(l+1, 0);
-       obj.meshes[l]=&coll.get<Mesh>(n);
+       obj.meshes[l]=coll.get<Mesh>(n);
 }
 
 void Object::Loader::material_inline()
@@ -178,7 +188,7 @@ void Object::Loader::material_inline()
 
 void Object::Loader::mesh(const string &n)
 {
-       obj.meshes[0]=&coll.get<Mesh>(n);
+       obj.meshes[0]=coll.get<Mesh>(n);
 }
 
 void Object::Loader::pass(const string &n)
@@ -192,7 +202,7 @@ void Object::Loader::pass(const string &n)
 
 void Object::Loader::shader(const string &n)
 {
-       Program *shprog=&coll.get<Program>(n);
+       Program *shprog=coll.get<Program>(n);
        if(shprog)  // Allow for unsupported shaders
        {
                RefPtr<ProgramData> shdata=new ProgramData;
@@ -210,12 +220,12 @@ void Object::Loader::texture(const string &n)
        unsigned eqsign=n.find('=');
        if(eqsign!=string::npos)
        {
-               obj.textures.push_back(&coll.get<Texture>(n.substr(eqsign+1)));
+               obj.textures.push_back(coll.get<Texture>(n.substr(eqsign+1)));
                textures.push_back(n.substr(0, eqsign));
        }
        else
        {
-               obj.textures.push_back(&coll.get<Texture>(n));
+               obj.textures.push_back(coll.get<Texture>(n));
                textures.push_back(n);
        }
 }