X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Feffects%2Feffect.cpp;h=e59aeed8e039dcbc352d6daf6904a3b44eacaa06;hb=f853ca0a365ae8b43ba8b2f4d6f21cd1c2bd4bd5;hp=e335b46a69dae807d8e0bb3b58f7c55ead2f72f9;hpb=233dff2a6c552e08da832496aecd88ef4f8948f1;p=libs%2Fgl.git diff --git a/source/effects/effect.cpp b/source/effects/effect.cpp index e335b46a..e59aeed8 100644 --- a/source/effects/effect.cpp +++ b/source/effects/effect.cpp @@ -1,5 +1,5 @@ +#include #include "effect.h" -#include "sampler.h" namespace Msp { namespace GL { @@ -7,17 +7,37 @@ namespace GL { Effect::Effect(Renderable &r): renderable(r) { - enabled_passes.insert(Tag()); + enable_for_method(Tag()); } -void Effect::enable_for_pass(Tag tag) +void Effect::enable_for_method(Tag tag) { - enabled_passes.insert(tag); + auto i = lower_bound(enabled_methods, tag); + if(i==enabled_methods.end() || *i!=tag) + enabled_methods.insert(i, tag); } -void Effect::disable_for_pass(Tag tag) +void Effect::disable_for_method(Tag tag) { - enabled_passes.erase(tag); + auto i = lower_bound(enabled_methods, tag); + if(i!=enabled_methods.end() && *i==tag) + enabled_methods.erase(i); +} + +bool Effect::is_enabled_for_method(Tag tag) const +{ + auto i = lower_bound(enabled_methods, tag); + return (i!=enabled_methods.end() && *i==tag); +} + + +Effect::Template::Loader::Loader(Template &t, Collection &c): + CollectionObjectLoader