]> git.tdb.fi Git - libs/gl.git/blob - source/effects/effect.cpp
Check the flat qualifier from the correct member
[libs/gl.git] / source / effects / effect.cpp
1 #include <msp/core/algorithm.h>
2 #include "effect.h"
3
4 using namespace std;
5
6 namespace Msp {
7 namespace GL {
8
9 Effect::Effect(Renderable &c):
10         content(c)
11 {
12         enable_for_method(Tag());
13 }
14
15 void Effect::enable_for_method(Tag tag)
16 {
17         auto i = lower_bound(enabled_methods, tag);
18         if(i==enabled_methods.end() || *i!=tag)
19                 enabled_methods.insert(i, tag);
20 }
21
22 void Effect::disable_for_method(Tag tag)
23 {
24         auto i = lower_bound(enabled_methods, tag);
25         if(i!=enabled_methods.end() && *i==tag)
26                 enabled_methods.erase(i);
27 }
28
29 bool Effect::is_enabled_for_method(Tag tag) const
30 {
31         auto i = lower_bound(enabled_methods, tag);
32         return (i!=enabled_methods.end() && *i==tag);
33 }
34
35
36 void Effect::Template::create_base(Effect &effect) const
37 {
38         for(Tag m: enabled_methods)
39                 effect.enable_for_method(m);
40 }
41
42
43 Effect::Template::Loader::Loader(Template &t, Collection &c):
44         CollectionObjectLoader<Template>(t, &c)
45 { }
46
47 void Effect::Template::Loader::init_actions()
48 {
49         add("content", &Template::content_name);
50         add("enable_for_method", &Loader::enable_for_method);
51 }
52
53 void Effect::Template::Loader::enable_for_method(const string &m)
54 {
55         obj.enabled_methods.push_back(m);
56 }
57
58 } // namespace GL
59 } // namespace Msp