From: mfranz Date: Fri, 17 Oct 2008 21:15:58 +0000 (+0000) Subject: add global switch for particle systems X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=7585ad430a7d3a8d15c2354ede529d3b0b23c957;p=simgear.git add global switch for particle systems --- diff --git a/simgear/scene/model/particles.cxx b/simgear/scene/model/particles.cxx index 0194e960..2dd2a0a4 100644 --- a/simgear/scene/model/particles.cxx +++ b/simgear/scene/model/particles.cxx @@ -48,6 +48,9 @@ namespace simgear { void GlobalParticleCallback::operator()(osg::Node* node, osg::NodeVisitor* nv) { + enabled = !enabledNode || enabledNode->getBoolValue(); + if (!enabled) + return; SGQuatd q = SGQuatd::fromLonLatDeg(modelRoot->getFloatValue("/position/longitude-deg",0), modelRoot->getFloatValue("/position/latitude-deg",0)); @@ -65,6 +68,8 @@ void GlobalParticleCallback::operator()(osg::Node* node, osg::NodeVisitor* nv) //static members osg::Vec3 GlobalParticleCallback::gravity; osg::Vec3 GlobalParticleCallback::wind; +bool GlobalParticleCallback::enabled = true; +SGConstPropertyNode_ptr GlobalParticleCallback::enabledNode = 0; osg::ref_ptr Particles::commonRoot; osg::ref_ptr Particles::psu = new osgParticle::ParticleSystemUpdater; @@ -513,7 +518,7 @@ void Particles::operator()(osg::Node* node, osg::NodeVisitor* nv) else if (counterCond) counter->setRateRange(counterStaticValue, counterStaticValue + counterStaticExtraRange); - if (counterCond && !counterCond->test()) + if (!GlobalParticleCallback::getEnabled() || (counterCond && !counterCond->test())) counter->setRateRange(0, 0); bool colorchange=false; for (int i = 0; i < 8; ++i) { diff --git a/simgear/scene/model/particles.hxx b/simgear/scene/model/particles.hxx index 4c9d5053..b01b190a 100644 --- a/simgear/scene/model/particles.hxx +++ b/simgear/scene/model/particles.hxx @@ -86,10 +86,22 @@ public: return wind; } + static void setSwitch(const SGPropertyNode* n) + { + enabledNode = n; + } + + static bool getEnabled() + { + return enabled; + } + private: static osg::Vec3 gravity; static osg::Vec3 wind; const SGPropertyNode* modelRoot; + static SGConstPropertyNode_ptr enabledNode; + static bool enabled; };