00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "SGStateAttributeVisitor.hxx"
00023
00024 SGStateAttributeVisitor::SGStateAttributeVisitor() :
00025 osg::NodeVisitor(osg::NodeVisitor::NODE_VISITOR,
00026 osg::NodeVisitor::TRAVERSE_ALL_CHILDREN)
00027 {
00028 }
00029
00030 void
00031 SGStateAttributeVisitor::apply(osg::StateSet::RefAttributePair&)
00032 {
00033 }
00034
00035 void
00036 SGStateAttributeVisitor::apply(osg::StateSet::AttributeList& attrList)
00037 {
00038 osg::StateSet::AttributeList::iterator i;
00039 i = attrList.begin();
00040 while (i != attrList.end()) {
00041 apply(i->second);
00042 ++i;
00043 }
00044 }
00045
00046 void
00047 SGStateAttributeVisitor::apply(osg::StateSet* stateSet)
00048 {
00049 if (!stateSet)
00050 return;
00051 apply(stateSet->getAttributeList());
00052 }
00053
00054 void
00055 SGStateAttributeVisitor::apply(osg::Node& node)
00056 {
00057 apply(node.getStateSet());
00058 traverse(node);
00059 }
00060
00061 void
00062 SGStateAttributeVisitor::apply(osg::Geode& node)
00063 {
00064 unsigned nDrawables = node.getNumDrawables();
00065 for (unsigned i = 0; i < nDrawables; ++i)
00066 apply(node.getDrawable(i)->getStateSet());
00067 apply(node.getStateSet());
00068 traverse(node);
00069 }