]> git.tdb.fi Git - libs/gl.git/blobdiff - source/technique.cpp
Drop Id tags and copyright notices from files
[libs/gl.git] / source / technique.cpp
index 9cbb005a54b8272bd36ab9e6c2c4f493411fb4cb..d963bea46c60f0d386439eac8ba6fb9ef8a967d3 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #include <msp/core/refptr.h>
 #include <msp/datafile/collection.h>
 #include <msp/strings/formatter.h>
@@ -20,6 +13,14 @@ using namespace std;
 namespace Msp {
 namespace GL {
 
+RenderPass &Technique::add_pass(const GL::Tag &tag)
+{
+       if(passes.count(tag))
+               throw KeyError("Duplicate pass");
+
+       return passes[tag];
+}
+
 bool Technique::has_pass(const GL::Tag &tag) const
 {
        return passes.count(tag);
@@ -80,17 +81,15 @@ Technique::InheritLoader::InheritLoader(Technique &t, Collection &c):
        add("texture", &InheritLoader::texture);
 }
 
-void Technique::InheritLoader::texture(unsigned index, const string &name)
+void Technique::InheritLoader::texture(const std::string &slot, const string &name)
 {
        Texture *tex = get_collection().get<Texture>(name);
        for(PassMap::iterator i=obj.passes.begin(); i!=obj.passes.end(); ++i)
        {
-               try
-               {
-                       i->second.set_texture(index, tex);
-               }
-               catch(const KeyError &)
-               { }
+               int index = i->second.get_texture_index(slot);
+               if(index<0)
+                       continue;
+               i->second.set_texture(index, tex);
        }
 }