X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fobject.h;h=4655695b355583d40598a7186eeab915c497d016;hb=85c82f93f4874bcf0b04332c9abb62cd2a5b181b;hp=bff41bf108e3f153fb6383f8fd09eb8dc91ec3bc;hpb=b617c5d7b5283ad260a77f01e42e6170cabbc03d;p=libs%2Fgl.git diff --git a/source/object.h b/source/object.h index bff41bf1..4655695b 100644 --- a/source/object.h +++ b/source/object.h @@ -31,10 +31,8 @@ similar objects. See class ObjectInstance. class Object: public Renderable { private: - std::vector meshes; - Technique *technique; - bool own_mesh:1; - bool own_technique:1; + std::vector > meshes; + RefPtr technique; public: class Loader: public DataFile::CollectionObjectLoader @@ -46,16 +44,21 @@ public: void init(); private: - void lod_mesh(unsigned, const std::string &); void mesh(); + void mesh(unsigned); void mesh(const std::string &); + void mesh(unsigned, const std::string &); void technique(); + void technique(const std::string &); }; Object(); ~Object(); - const Technique *get_technique() const { return technique; } + void set_mesh(const Mesh *m) { set_mesh(0, m); } + void set_mesh(unsigned, const Mesh *); + void set_technique(const Technique *); + const Technique *get_technique() const { return technique.get(); } /** Renders the object. A tag can be provided to render a non-default pass. @@ -82,7 +85,7 @@ public: if(!pass) return; - Bind bind(*pass); + Bind bind(pass); for(Iter i=begin; i!=end; ++i) render_instance(**i, tag); }