X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbuilders%2Fsequencetemplate.cpp;h=18a328e1b270775a77b2686a7471addcf3faa64a;hp=3ad973139010ae60b6e5cc5d602a9a0e1aca8aef;hb=2b2676392aff2eb6b38c3e463cc67f4d67a4ef8b;hpb=669e9bfc18d2f5e28a9c715e1a69b7637a2d9c8b diff --git a/source/builders/sequencetemplate.cpp b/source/builders/sequencetemplate.cpp index 3ad97313..18a328e1 100644 --- a/source/builders/sequencetemplate.cpp +++ b/source/builders/sequencetemplate.cpp @@ -140,13 +140,14 @@ SequenceTemplate::Step::Loader::Loader(Step &p, Collection &c): void SequenceTemplate::Step::Loader::init() { add("blend", &Loader::blend); - add("blend", &Loader::blend_predefined); + add("blend", &Loader::blend_factors); add("depth_test", &Loader::depth_test); - add("depth_test", &Loader::depth_test_predefined); + add("depth_test", &Loader::depth_compare); add("lighting", &Loader::lighting); add("lighting", &Loader::lighting_inline); add("object", &Loader::object); add("scene", &Loader::scene); + add("stencil_test", &Loader::stencil_test); } void SequenceTemplate::Step::Loader::set_inline_base_name(const string &n) @@ -154,42 +155,24 @@ void SequenceTemplate::Step::Loader::set_inline_base_name(const string &n) inline_base_name = n; } -void SequenceTemplate::Step::Loader::blend_predefined(const string &name) +void SequenceTemplate::Step::Loader::blend() { - const Blend *bln = 0; - if(name=="alpha") - bln = &Blend::alpha(); - else if(name=="additive") - bln = &Blend::additive(); - else if(name=="additive_alpha") - bln = &Blend::additive_alpha(); - else - throw key_error(name); - - obj.blend = bln; - obj.blend.keep(); + load_sub(obj.blend); } -void SequenceTemplate::Step::Loader::blend(BlendFactor src, BlendFactor dest) +void SequenceTemplate::Step::Loader::blend_factors(BlendFactor src, BlendFactor dest) { - obj.blend = new Blend(src, dest); + obj.blend = Blend(src, dest); } -void SequenceTemplate::Step::Loader::depth_test_predefined(const string &name) +void SequenceTemplate::Step::Loader::depth_test() { - const DepthTest *dtest = 0; - if(name=="lequal") - dtest = &DepthTest::lequal(); - else - throw key_error(name); - - obj.depth_test = dtest; - obj.depth_test.keep(); + load_sub(obj.depth_test); } -void SequenceTemplate::Step::Loader::depth_test(Predicate pred) +void SequenceTemplate::Step::Loader::depth_compare(Predicate c) { - obj.depth_test = new DepthTest(pred); + obj.depth_test = DepthTest(c); } void SequenceTemplate::Step::Loader::lighting_inline() @@ -215,5 +198,10 @@ void SequenceTemplate::Step::Loader::scene(const string &name) obj.default_renderable = &get_collection().get(name); } +void SequenceTemplate::Step::Loader::stencil_test() +{ + load_sub(obj.stencil_test); +} + } // namespace GL } // namespace Msp