X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Feffects%2Feffect.h;h=a77cdb5abae46023305c605b1dd7966203c07126;hb=7ab8bc0724f40b46d7f5da1bcb05ab6d0cecbb43;hp=ac458361700cf669052ea69039017451f2497e8f;hpb=190a7e11237351f6b730c28f7b16f183e8adc69c;p=libs%2Fgl.git diff --git a/source/effects/effect.h b/source/effects/effect.h index ac458361..a77cdb5a 100644 --- a/source/effects/effect.h +++ b/source/effects/effect.h @@ -34,17 +34,22 @@ public: Loader(Template &, Collection &); protected: virtual void init_actions(); + + private: + void enable_for_method(const std::string &); }; std::string content_name; + std::vector enabled_methods; virtual ~Template() = default; virtual Effect *create(const std::map &) const = 0; + void create_base(Effect &) const; }; protected: - Renderable &renderable; + Renderable &content; std::vector enabled_methods; protected: @@ -56,11 +61,11 @@ public: void disable_for_method(Tag); bool is_enabled_for_method(Tag) const; - virtual const Matrix *get_matrix() const { return renderable.get_matrix(); } - virtual const Geometry::BoundingSphere *get_bounding_sphere() const { return renderable.get_bounding_sphere(); } + virtual const Matrix *get_matrix() const { return content.get_matrix(); } + virtual const Geometry::BoundingSphere *get_bounding_sphere() const { return content.get_bounding_sphere(); } - virtual void setup_frame(Renderer &r) { renderable.setup_frame(r); } - virtual void finish_frame() { renderable.finish_frame(); } + virtual void setup_frame(Renderer &r) { content.setup_frame(r); } + virtual void finish_frame() { content.finish_frame(); } virtual void set_debug_name(const std::string &) = 0; };