X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpipelinetemplate.cpp;h=14f6e2c024eed34fc123112161b15465e3f60cb5;hb=c6604d0ee313f60b42b3a205c40ba7e1abbc3cb8;hp=8c6dbe501203e0ee9bbcfb7a22fc27e3d869b7d8;hpb=e16855bccb78c721e2fe3f2ea8fc0310e041cb43;p=libs%2Fgl.git diff --git a/source/pipelinetemplate.cpp b/source/pipelinetemplate.cpp index 8c6dbe50..14f6e2c0 100644 --- a/source/pipelinetemplate.cpp +++ b/source/pipelinetemplate.cpp @@ -22,7 +22,7 @@ PipelineTemplate::PipelineTemplate(): PipelineTemplate::~PipelineTemplate() { for(PostProcessorArray::iterator i=postprocessors.begin(); i!=postprocessors.end(); ++i) - delete *i; + delete i->postprocessor_template; } @@ -45,6 +45,17 @@ PipelineTemplate::Pass::~Pass() { } +PipelineTemplate::PostProcessor::PostProcessor(GL::PostProcessor::Template *ppt): + postprocessor_template(ppt) +{ } + + +PipelineTemplate::PostProcLoader::PostProcLoader() +{ + get_postprocessor_registry().add_all(*this); +} + + PipelineTemplate::Loader::Loader(PipelineTemplate &t): DataFile::CollectionObjectLoader(t, 0) { @@ -63,8 +74,12 @@ void PipelineTemplate::Loader::init() add("multisample", &Loader::multisample); add("multisample", &Loader::multisample_range); add("pass", &Loader::pass); + add("postprocessor", &Loader::postprocessor); +} - get_postprocessor_registry().add_all(*this); +void PipelineTemplate::Loader::postprocessor_loaded() +{ + obj.postprocessors.push_back(get_postprocessor_template()); } void PipelineTemplate::Loader::multisample(unsigned samples) @@ -92,6 +107,16 @@ void PipelineTemplate::Loader::pass(const string &tag, const string &rend) obj.passes.push_back(pss); } +void PipelineTemplate::Loader::postprocessor(const std::string &slot) +{ + PostProcLoader ldr; + load_sub_with(ldr); + PostProcessor pp; + pp.postprocessor_template = ldr.get_postprocessor_template(); + pp.slot_name = slot; + obj.postprocessors.push_back(pp); +} + PipelineTemplate::Pass::Loader::Loader(Pass &p): DataFile::CollectionObjectLoader(p, 0)