]> git.tdb.fi Git - libs/gl.git/blobdiff - source/effects/effect.cpp
Check the flat qualifier from the correct member
[libs/gl.git] / source / effects / effect.cpp
index e335b46a69dae807d8e0bb3b58f7c55ead2f72f9..0ead01c32fb22ea3d91c43d0cfa1b677c37faf05 100644 (file)
@@ -1,23 +1,58 @@
+#include <msp/core/algorithm.h>
 #include "effect.h"
-#include "sampler.h"
+
+using namespace std;
 
 namespace Msp {
 namespace GL {
 
-Effect::Effect(Renderable &r):
-       renderable(r)
+Effect::Effect(Renderable &c):
+       content(c)
+{
+       enable_for_method(Tag());
+}
+
+void Effect::enable_for_method(Tag tag)
+{
+       auto i = lower_bound(enabled_methods, tag);
+       if(i==enabled_methods.end() || *i!=tag)
+               enabled_methods.insert(i, tag);
+}
+
+void Effect::disable_for_method(Tag 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);
+}
+
+
+void Effect::Template::create_base(Effect &effect) const
 {
-       enabled_passes.insert(Tag());
+       for(Tag m: enabled_methods)
+               effect.enable_for_method(m);
 }
 
-void Effect::enable_for_pass(Tag tag)
+
+Effect::Template::Loader::Loader(Template &t, Collection &c):
+       CollectionObjectLoader<Template>(t, &c)
+{ }
+
+void Effect::Template::Loader::init_actions()
 {
-       enabled_passes.insert(tag);
+       add("content", &Template::content_name);
+       add("enable_for_method", &Loader::enable_for_method);
 }
 
-void Effect::disable_for_pass(Tag tag)
+void Effect::Template::Loader::enable_for_method(const string &m)
 {
-       enabled_passes.erase(tag);
+       obj.enabled_methods.push_back(m);
 }
 
 } // namespace GL