X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fscene%2Fmodel%2Fparticles.cxx;h=a7fee2ded106e3dbb4c69bd8570bd6f930ddd6f6;hb=32a6bd78d8bf143f40922f1a0bc7a88ea7706a7d;hp=4d1ebc04044c29283edba281b630d231866ba14c;hpb=2cc5e776b335e2d18573270bbe9ded1f834ea3d1;p=simgear.git diff --git a/simgear/scene/model/particles.cxx b/simgear/scene/model/particles.cxx index 4d1ebc04..a7fee2de 100644 --- a/simgear/scene/model/particles.cxx +++ b/simgear/scene/model/particles.cxx @@ -1,6 +1,6 @@ // particles.cxx - classes to manage particles -// started in 2008 by Tiago Gusmão, using animation.hxx as reference -// Copyright (C) 2008 Tiago Gusmão +// started in 2008 by Tiago Gusm�o, using animation.hxx as reference +// Copyright (C) 2008 Tiago Gusm�o // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -21,7 +21,6 @@ # include #endif -#include #include #include #include @@ -45,10 +44,6 @@ #include "particles.hxx" -#if SG_OSG_VERSION >= 27004 -#define OSG_PARTICLE_FIX 1 -#endif - namespace simgear { void GlobalParticleCallback::operator()(osg::Node* node, osg::NodeVisitor* nv) @@ -80,7 +75,7 @@ SGConstPropertyNode_ptr GlobalParticleCallback::enabledNode = 0; osg::ref_ptr Particles::commonRoot; osg::ref_ptr Particles::psu = new osgParticle::ParticleSystemUpdater; -osg::ref_ptr Particles::commonGeode = new osg::Geode;; +osg::ref_ptr Particles::commonGeode = new osg::Geode; osg::Vec3 Particles::_wind; bool Particles::_frozen = false; @@ -115,6 +110,7 @@ osg::Group* Particles::getCommonRoot() commonGeode.get()->setName("common particle system geode"); commonRoot.get()->addChild(commonGeode.get()); commonRoot.get()->addChild(psu.get()); + commonRoot->setNodeMask( ~simgear::MODELLIGHT_BIT ); } return commonRoot.get(); } @@ -135,7 +131,7 @@ void transformParticles(osgParticle::ParticleSystem* particleSys, osg::Group * Particles::appendParticles(const SGPropertyNode* configNode, SGPropertyNode* modelRoot, - const osgDB::ReaderWriter::Options* + const osgDB::Options* options) { SG_LOG(SG_GENERAL, SG_DEBUG, "Setting up a particle system!\n"); @@ -192,19 +188,12 @@ osg::Group * Particles::appendParticles(const SGPropertyNode* configNode, osg::Geode* g = new osg::Geode; align->addChild(g); g->addDrawable(particleSys); -#ifndef OSG_PARTICLE_FIX - emitter->setReferenceFrame(osgParticle::Emitter::ABSOLUTE_RF); -#endif } else { -#ifdef OSG_PARTICLE_FIX callback()->particleFrame = new osg::MatrixTransform(); osg::Geode* g = new osg::Geode; g->addDrawable(particleSys); callback()->particleFrame->addChild(g); getCommonRoot()->addChild(callback()->particleFrame.get()); -#else - getCommonGeode()->addDrawable(particleSys); -#endif } std::string textureFile; if (configNode->hasValue("texture")) { @@ -477,14 +466,7 @@ osg::Group * Particles::appendParticles(const SGPropertyNode* configNode, program->setFluidToWater(); if (programnode->getBoolValue("gravity", true)) { -#ifdef OSG_PARTICLE_FIX program->setToGravity(); -#else - if (attach == "world") - callback()->setupProgramGravity(true); - else - program->setToGravity(); -#endif } else program->setAcceleration(osg::Vec3(0,0,0)); @@ -545,7 +527,7 @@ void Particles::operator()(osg::Node* node, osg::NodeVisitor* nv) particleSys->getDefaultParticleTemplate().setSizeRange(osgParticle::rangef(startSize, endSize)); if (lifeValue) particleSys->getDefaultParticleTemplate().setLifeTime(lifeValue->getValue()); -#ifdef OSG_PARTICLE_FIX + if (particleFrame.valid()) { MatrixList mlist = node->getWorldMatrices(); if (!mlist.empty()) { @@ -568,13 +550,5 @@ void Particles::operator()(osg::Node* node, osg::NodeVisitor* nv) } if (program.valid() && useWind) program->setWind(_wind); -#else - if (program.valid()) { - if (useGravity) - program->setAcceleration(GlobalParticleCallback::getGravityVector()); - if (useWind) - program->setWind(GlobalParticleCallback::getWindVector()); - } -#endif } } // namespace simgear