diff --git a/components/resource/scenemanager.cpp b/components/resource/scenemanager.cpp index 065187c79..e3f38e886 100644 --- a/components/resource/scenemanager.cpp +++ b/components/resource/scenemanager.cpp @@ -6,6 +6,7 @@ #include #include +#include #include @@ -153,12 +154,29 @@ namespace Resource virtual void apply(osg::Node& node) { + if (osgFX::Effect* effect = dynamic_cast(&node)) + apply(*effect); + osg::StateSet* stateset = node.getStateSet(); if (stateset) apply(stateset); + traverse(node); } + void apply(osgFX::Effect& effect) + { + for (int i =0; igetNumPasses(); ++pass) + { + if (tech->getPassStateSet(pass)) + apply(tech->getPassStateSet(pass)); + } + } + } + virtual void apply(osg::Geode& geode) { osg::StateSet* stateset = geode.getStateSet();