X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbuilders%2Fsequencetemplate.h;h=5c13aebebc2263677447e93e33ab96de25883cf0;hp=3f4b86b956d3499ee1020a96595cbf78818db106;hb=083a8227715fa32c841fc2b8126e4ab8d2840ba0;hpb=54fdd850d1e657bc357d859a532497905ded741a diff --git a/source/builders/sequencetemplate.h b/source/builders/sequencetemplate.h index 3f4b86b9..5c13aebe 100644 --- a/source/builders/sequencetemplate.h +++ b/source/builders/sequencetemplate.h @@ -7,6 +7,7 @@ #include #include #include "depthtest.h" +#include "effect.h" #include "postprocessor.h" #include "resources.h" #include "stenciltest.h" @@ -47,18 +48,23 @@ public: virtual void init_actions(); void clear(); + void effect(const std::string &); void multisample(unsigned); void multisample_range(unsigned, unsigned); void postprocessor(); void postprocessor_with_slot(const std::string &); void renderable(const std::string &); void renderable_with_default(const std::string &, const std::string &); + void sequence(const std::string &, const std::string &); void step(const std::string &, const std::string &); }; struct Renderable { + Effect::Template *effect_template = 0; GL::Renderable *renderable = 0; + SequenceTemplate *sequence_template = 0; + std::map sequence_renderables; std::string slot_name; }; @@ -118,6 +124,19 @@ private: void stencil(int); }; + class SequenceLoader: public DataFile::ObjectLoader + { + private: + static ActionMap shared_actions; + + public: + SequenceLoader(Renderable &); + private: + virtual void init_actions(); + + void renderable(const std::string &, const std::string &); + }; + bool hdr = false; bool alpha = false; unsigned required_multisample = 0; @@ -145,6 +164,9 @@ public: float get_clear_depth() const { return clear_depth; } int get_clear_stencil() const { return clear_stencil; } + template + static void register_effect(const std::string &); + template static void register_postprocessor(const std::string &); @@ -153,6 +175,12 @@ private: static TemplateRegistry &get_registry(); }; +template +void SequenceTemplate::register_effect(const std::string &kw) +{ + get_registry().register_type(kw); +} + template void SequenceTemplate::register_postprocessor(const std::string &kw) {