]> 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 4ab867ff23f538a0a52fbb08e4dbe0dc750691be..0ead01c32fb22ea3d91c43d0cfa1b677c37faf05 100644 (file)
@@ -1,22 +1,58 @@
+#include <msp/core/algorithm.h>
 #include "effect.h"
 
+using namespace std;
+
 namespace Msp {
 namespace GL {
 
-Effect::Effect(Renderable &r):
-       renderable(r)
+Effect::Effect(Renderable &c):
+       content(c)
 {
-       enabled_methods.insert(Tag());
+       enable_for_method(Tag());
 }
 
 void Effect::enable_for_method(Tag tag)
 {
-       enabled_methods.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_method(Tag tag)
 {
-       enabled_methods.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);
+}
+
+
+void Effect::Template::create_base(Effect &effect) const
+{
+       for(Tag m: enabled_methods)
+               effect.enable_for_method(m);
+}
+
+
+Effect::Template::Loader::Loader(Template &t, Collection &c):
+       CollectionObjectLoader<Template>(t, &c)
+{ }
+
+void Effect::Template::Loader::init_actions()
+{
+       add("content", &Template::content_name);
+       add("enable_for_method", &Loader::enable_for_method);
+}
+
+void Effect::Template::Loader::enable_for_method(const string &m)
+{
+       obj.enabled_methods.push_back(m);
 }
 
 } // namespace GL