X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fscene%2Fmaterial%2FEffectCullVisitor.cxx;h=c44d8d695c1cf086ba42793030a2d829c71f2db1;hb=617a09d89a672d8955c73f481bc021afccfe860e;hp=e2d199207dd52293e17b1c5b7f73e8535e0bcdfc;hpb=aef8f13290c74359c1a7a54bd5e6e375b3f0c49e;p=simgear.git diff --git a/simgear/scene/material/EffectCullVisitor.cxx b/simgear/scene/material/EffectCullVisitor.cxx index e2d19920..c44d8d69 100644 --- a/simgear/scene/material/EffectCullVisitor.cxx +++ b/simgear/scene/material/EffectCullVisitor.cxx @@ -19,6 +19,7 @@ #endif #include +#include #include "EffectCullVisitor.hxx" @@ -26,12 +27,15 @@ #include "Effect.hxx" #include "Technique.hxx" +#include + namespace simgear { using osgUtil::CullVisitor; -EffectCullVisitor::EffectCullVisitor() +EffectCullVisitor::EffectCullVisitor(bool collectLights) : + _collectLights(collectLights) { } @@ -55,6 +59,9 @@ void EffectCullVisitor::apply(osg::Geode& node) CullVisitor::apply(node); return; } + if (_collectLights && ( eg->getNodeMask() & MODELLIGHT_BIT ) ) { + _lightList.push_back( eg ); + } Effect* effect = eg->getEffect(); Technique* technique = 0; if (!effect) { @@ -78,4 +85,27 @@ void EffectCullVisitor::apply(osg::Geode& node) popStateSet(); } + +void EffectCullVisitor::reset() +{ + _lightList.clear(); + + osgUtil::CullVisitor::reset(); +} + +void EffectCullVisitor::clearBufferList() +{ + _bufferList.clear(); +} + +void EffectCullVisitor::addBuffer(int i, osg::Texture2D* tex) +{ + _bufferList.insert(std::make_pair(i,tex)); +} + +osg::Texture2D* EffectCullVisitor::getBuffer(int i) +{ + return _bufferList[i]; +} + }