18 #include <osgFX/Export>
19 #include <osgFX/Technique>
21 #include <osg/buffered_value>
22 #include <osg/ref_ptr>
26 #include <osg/OccluderNode>
35 #define META_Effect(library, classname, effectname, effectdescription, effectauthor) \
36 META_Node(library, classname) \
37 virtual const char *effectName() const { return effectname; } \
38 virtual const char *effectDescription() const { return effectdescription; } \
39 virtual const char *effectAuthor() const { return effectauthor; }
72 virtual inline const char*
libraryName()
const {
return "osgFX"; }
73 virtual inline const char*
className()
const {
return "Effect"; }
76 virtual const char *effectName()
const = 0;
79 virtual const char *effectDescription()
const = 0;
82 virtual const char *effectAuthor()
const = 0;
85 inline bool getEnabled()
const;
88 inline void setEnabled(
bool v);
98 inline int getNumTechniques()
const;
104 inline const Technique* getTechnique(
int i)
const;
107 inline int getSelectedTechnique()
const;
114 inline void selectTechnique(
int i = AUTO_DETECT);
127 inline void dirtyTechniques();
130 inline void addTechnique(
Technique* tech);
138 virtual bool define_techniques() = 0;
145 typedef std::vector<osg::ref_ptr<Technique> > Technique_list;
146 Technique_list _techs;
153 int _global_sel_tech;
159 void build_dummy_node();
176 return static_cast<int>(_techs.size());
181 return _techs[i].get();
186 return _techs[i].get();
191 return _global_sel_tech;
196 _global_sel_tech = i;
201 _techs.push_back(tech);
206 _techs_defined =
false;
212 inherited::traverse(nv);
int getNumTechniques() const
void selectTechnique(int i=AUTO_DETECT)
virtual const char * libraryName() const
void addTechnique(Technique *tech)
Effect & operator=(const Effect &)
void inherited_traverse(osg::NodeVisitor &nv)
Technique * getTechnique(int i)
virtual bool isSameKindAs(const osg::Object *obj) const
virtual const char * className() const
int getSelectedTechnique() const