]> git.tdb.fi Git - libs/gl.git/commitdiff
Expose texture replacement functionality from Technique
authorMikko Rasa <tdb@tdb.fi>
Wed, 15 Jul 2015 20:03:31 +0000 (23:03 +0300)
committerMikko Rasa <tdb@tdb.fi>
Wed, 15 Jul 2015 20:03:31 +0000 (23:03 +0300)
source/technique.cpp
source/technique.h

index 15406a931e10e8a6249434d91a9d7002180efeea..1e8f8fccea433d4e63625e453bab7992beaa1439 100644 (file)
@@ -28,6 +28,17 @@ const RenderPass &Technique::get_pass(const GL::Tag &tag) const
        return get_item(passes, tag);
 }
 
+void Technique::replace_texture(const string &slot, const Texture &tex)
+{
+       for(PassMap::iterator i=passes.begin(); i!=passes.end(); ++i)
+       {
+               int index = i->second.get_texture_index(slot);
+               if(index<0)
+                       continue;
+               i->second.set_texture(index, &tex);
+       }
+}
+
 bool Technique::has_shaders() const
 {
        for(PassMap::const_iterator i=passes.begin(); i!=passes.end(); ++i)
@@ -97,14 +108,7 @@ void Technique::InheritLoader::material(const string &pass_tag, const string &na
 
 void Technique::InheritLoader::texture(const string &slot, const string &name)
 {
-       Texture &tex = get_collection().get<Texture>(name);
-       for(PassMap::iterator i=obj.passes.begin(); i!=obj.passes.end(); ++i)
-       {
-               int index = i->second.get_texture_index(slot);
-               if(index<0)
-                       continue;
-               i->second.set_texture(index, &tex);
-       }
+       obj.replace_texture(slot, get_collection().get<Texture>(name));
 }
 
 } // namespace GL
index 48e393fc40f592d35870c8f0a7b5ed3eb84fa688..6841f486fd3fc3096e6884eb94621ef53c56e716 100644 (file)
@@ -50,6 +50,7 @@ public:
        bool has_pass(const GL::Tag &) const;
        const RenderPass &get_pass(const GL::Tag &) const;
        const PassMap &get_passes() const { return passes; }
+       void replace_texture(const std::string &, const Texture &);
        bool has_shaders() const;
 };