From 7585ad430a7d3a8d15c2354ede529d3b0b23c957 Mon Sep 17 00:00:00 2001 From: mfranz Date: Fri, 17 Oct 2008 21:15:58 +0000 Subject: [PATCH] add global switch for particle systems --- simgear/scene/model/particles.cxx | 7 ++++++- simgear/scene/model/particles.hxx | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) 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; }; -- 2.39.5