X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbuilders%2Fpipelinetemplate.cpp;h=de91450e755931ca0e641065db78ee76d0e3dd31;hp=b78b4c40a2fca807017fbbbc29b182408e8f0533;hb=da85eb77172dbd62f764a63b45c79fc059af563b;hpb=7aaec9a70b8d7733429bec043f8e33e02956f266 diff --git a/source/builders/pipelinetemplate.cpp b/source/builders/pipelinetemplate.cpp index b78b4c40..de91450e 100644 --- a/source/builders/pipelinetemplate.cpp +++ b/source/builders/pipelinetemplate.cpp @@ -6,6 +6,7 @@ #include "colorcurve.h" #include "lighting.h" #include "pipelinetemplate.h" +#include "resources.h" #include "tests.h" using namespace std; @@ -14,6 +15,7 @@ namespace Msp { namespace GL { PipelineTemplate::PipelineTemplate(): + resources(0), hdr(false), alpha(false), required_multisample(0), @@ -26,6 +28,13 @@ PipelineTemplate::~PipelineTemplate() delete i->postprocessor_template; } +Resources &PipelineTemplate::get_resources() const +{ + if(!resources) + throw logic_error("no resources"); + return *resources; +} + PipelineTemplate::PostProcessorRegistry &PipelineTemplate::get_postprocessor_registry() { @@ -53,23 +62,12 @@ PipelineTemplate::PostProcessor::PostProcessor(GL::PostProcessor::Template *ppt) PipelineTemplate::PostProcLoader::PostProcLoader() { - get_postprocessor_registry().add_all(*this); + get_postprocessor_registry().invoke_all(*this); } -PipelineTemplate::Loader::Loader(PipelineTemplate &t): - DataFile::CollectionObjectLoader(t, 0) -{ - init(); -} - PipelineTemplate::Loader::Loader(PipelineTemplate &t, Collection &c): - DataFile::CollectionObjectLoader(t, &c) -{ - init(); -} - -void PipelineTemplate::Loader::init() + DataFile::CollectionObjectLoader(t, &c) { add("hdr", &PipelineTemplate::hdr); add("alpha", &PipelineTemplate::alpha); @@ -77,6 +75,8 @@ void PipelineTemplate::Loader::init() add("multisample", &Loader::multisample_range); add("pass", &Loader::pass); add("postprocessor", &Loader::postprocessor); + + obj.resources = &c; } void PipelineTemplate::Loader::postprocessor_loaded() @@ -109,7 +109,7 @@ void PipelineTemplate::Loader::pass(const string &tag, const string &rend) obj.passes.push_back(pss); } -void PipelineTemplate::Loader::postprocessor(const std::string &slot) +void PipelineTemplate::Loader::postprocessor(const string &slot) { PostProcLoader ldr; load_sub_with(ldr);