const RenderPass &Technique::get_pass(const GL::Tag &tag) const
{
- PassMap::const_iterator i=passes.find(tag);
+ 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<Technique>(t, 0)
+{
+ init();
+}
+
Technique::Loader::Loader(Technique &t, Collection &c):
DataFile::CollectionObjectLoader<Technique>(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<Technique>(n)->get_passes();
+ obj.passes = get_collection().get<Technique>(n)->get_passes();
InheritLoader ldr(obj, get_collection());
load_sub_with(ldr);
}
throw KeyError("Duplicate pass name", n);
RenderPass p;
- load_sub(p, *coll);
+ if(coll)
+ load_sub(p, get_collection());
+ else
+ load_sub(p);
obj.passes.insert(PassMap::value_type(tag, p));
}
void Technique::InheritLoader::texture(const string &slot, const string &name)
{
- Texture *tex=get_collection().get<Texture>(name);
+ Texture *tex = get_collection().get<Texture>(name);
for(PassMap::iterator i=obj.passes.begin(); i!=obj.passes.end(); ++i)
{
try