X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftechnique.cpp;h=d6ec7115f6e703a5b215803952a27716f934e468;hp=49b487982993d259f3807c8b3820f9991cf85998;hb=HEAD;hpb=09b835f0ff0ee594fbb555224a85b28398e14116 diff --git a/source/technique.cpp b/source/technique.cpp deleted file mode 100644 index 49b48798..00000000 --- a/source/technique.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/* $Id$ - -This file is part of libmspgl -Copyright © 2008-2011 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - -#include -#include -#include -#include "material.h" -#include "program.h" -#include "programdata.h" -#include "tag.h" -#include "technique.h" -#include "texture.h" - -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); -} - -const RenderPass &Technique::get_pass(const GL::Tag &tag) const -{ - PassMap::const_iterator i = passes.find(tag); - if(i==passes.end()) - throw KeyError("Unknown pass"); - return i->second; -} - - -Technique::Loader::Loader(Technique &t): - DataFile::CollectionObjectLoader(t, 0) -{ - init(); -} - -Technique::Loader::Loader(Technique &t, Collection &c): - DataFile::CollectionObjectLoader(t, &c) -{ - init(); -} - -void Technique::Loader::init() -{ - add("inherit", &Loader::inherit); - add("pass", &Loader::pass); -} - -void Technique::Loader::inherit(const string &n) -{ - obj.passes = get_collection().get(n)->get_passes(); - InheritLoader ldr(obj, get_collection()); - load_sub_with(ldr); -} - -void Technique::Loader::pass(const string &n) -{ - Tag tag(n); - if(obj.passes.count(tag)) - throw KeyError("Duplicate pass name", n); - - RenderPass p; - if(coll) - load_sub(p, get_collection()); - else - load_sub(p); - obj.passes.insert(PassMap::value_type(tag, p)); -} - - -Technique::InheritLoader::InheritLoader(Technique &t, Collection &c): - DataFile::CollectionObjectLoader(t, &c) -{ - add("texture", &InheritLoader::texture); -} - -void Technique::InheritLoader::texture(const std::string &slot, const string &name) -{ - Texture *tex = get_collection().get(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); - } -} - -} // namespace GL -} // namespace Msp