]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/util/SGTextureStateAttributeVisitor.hxx
Random trees from Stuart Buchanan
[simgear.git] / simgear / scene / util / SGTextureStateAttributeVisitor.hxx
index 7458f85ac607da2f336c497cbddfe9a6d1b4d2df..3a000d6d41984120253c785a1e60ffdc9f8b0d5a 100644 (file)
 #ifndef SG_SCENE_TEXTURESTATEATTRIBUTEVISITOR_HXX
 #define SG_SCENE_TEXTURESTATEATTRIBUTEVISITOR_HXX
 
+#include <osg/Geode>
+#include <osg/Node>
+#include <osg/NodeVisitor>
+#include <osg/StateSet>
+
 class SGTextureStateAttributeVisitor : public osg::NodeVisitor {
 public:
-  SGTextureStateAttributeVisitor() :
-    osg::NodeVisitor(osg::NodeVisitor::NODE_VISITOR,
-                     osg::NodeVisitor::TRAVERSE_ALL_CHILDREN)
-  { }
-
-  virtual void apply(int textureUnit, osg::StateSet::RefAttributePair& refAttr)
-  { }
-  virtual void apply(int textureUnit, osg::StateSet::AttributeList& attrList)
-  {
-    osg::StateSet::AttributeList::iterator i;
-    i = attrList.begin();
-    while (i != attrList.end()) {
-      apply(textureUnit, i->second);
-      ++i;
-    }
-  }
-  virtual void apply(osg::StateSet::TextureAttributeList& attrList)
-  {
-    for (unsigned i = 0; i < attrList.size(); ++i)
-      apply(i, attrList[i]);
-  }
-  virtual void apply(osg::StateSet* stateSet)
-  {
-    if (!stateSet)
-      return;
-    apply(stateSet->getTextureAttributeList());
-  }
+  SGTextureStateAttributeVisitor();
 
-  virtual void apply(osg::Node& node)
-  {
-    apply(node.getStateSet());
-    traverse(node);
-  }
-  virtual void apply(osg::Geode& node)
-  {
-    unsigned nDrawables = node.getNumDrawables();
-    for (unsigned i = 0; i < nDrawables; ++i)
-      apply(node.getDrawable(i)->getStateSet());
-    apply(node.getStateSet());
-    traverse(node);
-  }
+  virtual void apply(int textureUnit, osg::StateSet::RefAttributePair& refAttr);
+  virtual void apply(int textureUnit, osg::StateSet::AttributeList& attrList);
+  virtual void apply(osg::StateSet::TextureAttributeList& attrList);
+  virtual void apply(osg::StateSet* stateSet);
+  virtual void apply(osg::Node& node);
+  virtual void apply(osg::Geode& node);
 };
 
 #endif