From 71401aafe7eaef6b864fb0b1e6ad86f89e9a70c3 Mon Sep 17 00:00:00 2001 From: scrawl Date: Fri, 5 Feb 2016 21:08:32 +0100 Subject: [PATCH] Handle multipass techniques in SetFilterSettingsVisitor --- components/resource/scenemanager.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/components/resource/scenemanager.cpp b/components/resource/scenemanager.cpp index 065187c79e..e3f38e8867 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();