From d0c9ef1e14f3cf7fca40b38b7b87d4f063b6864e Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 18 Nov 2005 17:04:55 +0000 Subject: [PATCH] Added the ability for osgParticle::ParticleEffect to switch off the automatic setup. Normally the automatic setup is useful, but in the case of the .osg support this automatic update was forcing premature loading of imagery that wasn't necessarily, and can lead to reports of looking for files that arn't present. --- include/osgParticle/ExplosionDebrisEffect | 4 +- include/osgParticle/ExplosionEffect | 4 +- include/osgParticle/FireEffect | 4 +- include/osgParticle/ParticleEffect | 8 ++- include/osgParticle/SmokeEffect | 4 +- include/osgParticle/SmokeTrailEffect | 4 +- src/osgParticle/ExplosionDebrisEffect.cpp | 17 +++++- src/osgParticle/ExplosionEffect.cpp | 16 ++++- src/osgParticle/FireEffect.cpp | 17 +++++- src/osgParticle/ParticleEffect.cpp | 58 +++++++++++-------- src/osgParticle/SmokeEffect.cpp | 17 +++++- src/osgParticle/SmokeTrailEffect.cpp | 17 +++++- .../osgParticle/IO_ExplosionDebrisEffect.cpp | 2 +- .../osgParticle/IO_ExplosionEffect.cpp | 2 +- src/osgPlugins/osgParticle/IO_FireEffect.cpp | 2 +- .../osgParticle/IO_ParticleEffect.cpp | 9 ++- src/osgPlugins/osgParticle/IO_SmokeEffect.cpp | 2 +- .../osgParticle/IO_SmokeTrailEffect.cpp | 2 +- .../osgParticle/ExplosionDebrisEffect.cpp | 3 +- .../osgParticle/ExplosionEffect.cpp | 3 +- src/osgWrappers/osgParticle/FireEffect.cpp | 3 +- .../osgParticle/ParticleEffect.cpp | 5 +- src/osgWrappers/osgParticle/SmokeEffect.cpp | 3 +- .../osgParticle/SmokeTrailEffect.cpp | 3 +- 24 files changed, 163 insertions(+), 46 deletions(-) diff --git a/include/osgParticle/ExplosionDebrisEffect b/include/osgParticle/ExplosionDebrisEffect index 4d62a9232..c89a88d3a 100644 --- a/include/osgParticle/ExplosionDebrisEffect +++ b/include/osgParticle/ExplosionDebrisEffect @@ -25,7 +25,9 @@ namespace osgParticle { public: - ExplosionDebrisEffect(const osg::Vec3& position=osg::Vec3(0.0f,0.0f,0.0f), float scale=1.0f, float intensity=1.0f); + ExplosionDebrisEffect(bool automaticSetup=true); + + ExplosionDebrisEffect(const osg::Vec3& position, float scale=1.0f, float intensity=1.0f); ExplosionDebrisEffect(const ExplosionDebrisEffect& copy, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); diff --git a/include/osgParticle/ExplosionEffect b/include/osgParticle/ExplosionEffect index 9d7a12cb0..3391e7520 100644 --- a/include/osgParticle/ExplosionEffect +++ b/include/osgParticle/ExplosionEffect @@ -25,7 +25,9 @@ namespace osgParticle { public: - ExplosionEffect(const osg::Vec3& position=osg::Vec3(0.0f,0.0f,0.0f), float scale=1.0f, float intensity=1.0f); + ExplosionEffect(bool automaticSetup=true); + + ExplosionEffect(const osg::Vec3& position, float scale=1.0f, float intensity=1.0f); ExplosionEffect(const ExplosionEffect& copy, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); diff --git a/include/osgParticle/FireEffect b/include/osgParticle/FireEffect index e6537832e..f5ad97678 100644 --- a/include/osgParticle/FireEffect +++ b/include/osgParticle/FireEffect @@ -25,7 +25,9 @@ namespace osgParticle { public: - FireEffect(const osg::Vec3& position=osg::Vec3(0.0f,0.0f,0.0f), float scale=1.0f, float intensity=1.0f); + FireEffect(bool automaticSetup=true); + + FireEffect(const osg::Vec3& position, float scale=1.0f, float intensity=1.0f); FireEffect(const FireEffect& copy, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); diff --git a/include/osgParticle/ParticleEffect b/include/osgParticle/ParticleEffect index 79cfe0354..2771951d3 100644 --- a/include/osgParticle/ParticleEffect +++ b/include/osgParticle/ParticleEffect @@ -24,7 +24,8 @@ namespace osgParticle { public: - ParticleEffect(): + ParticleEffect(bool automaticSetup=true): + _automaticSetup(automaticSetup), _useLocalParticleSystem(true), _scale(1.0f), _intensity(1.0f), @@ -41,6 +42,9 @@ namespace osgParticle virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast(obj) != 0; } virtual void accept(osg::NodeVisitor& nv) { if (nv.validNodeMask(*this)) { nv.pushOntoNodePath(this); nv.apply(*this); nv.popFromNodePath(); } } + void setAutomaticSetup(bool flag) { _automaticSetup = flag; } + bool getAutomaticSetup() const { return _automaticSetup; } + void setUseLocalParticleSystem(bool local); bool getUseLocalParticleSystem() const { return _useLocalParticleSystem; } @@ -93,6 +97,8 @@ namespace osgParticle protected: virtual ~ParticleEffect() {} + + bool _automaticSetup; osg::ref_ptr _particleSystem; diff --git a/include/osgParticle/SmokeEffect b/include/osgParticle/SmokeEffect index e068d70b5..c5cacde7b 100644 --- a/include/osgParticle/SmokeEffect +++ b/include/osgParticle/SmokeEffect @@ -25,7 +25,9 @@ namespace osgParticle { public: - SmokeEffect(const osg::Vec3& position=osg::Vec3(0.0f,0.0f,0.0f), float scale=1.0f, float intensity=1.0f); + SmokeEffect(bool automaticSetup=true); + + SmokeEffect(const osg::Vec3& position, float scale=1.0f, float intensity=1.0f); SmokeEffect(const SmokeEffect& copy, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); diff --git a/include/osgParticle/SmokeTrailEffect b/include/osgParticle/SmokeTrailEffect index 0eefd93f2..59309c874 100644 --- a/include/osgParticle/SmokeTrailEffect +++ b/include/osgParticle/SmokeTrailEffect @@ -25,7 +25,9 @@ namespace osgParticle { public: - SmokeTrailEffect(const osg::Vec3& position=osg::Vec3(0.0f,0.0f,0.0f), float scale=1.0f, float intensity=1.0f); + SmokeTrailEffect(bool automaticSetup=true); + + SmokeTrailEffect(const osg::Vec3& position, float scale=1.0f, float intensity=1.0f); SmokeTrailEffect(const SmokeTrailEffect& copy, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY); diff --git a/src/osgParticle/ExplosionDebrisEffect.cpp b/src/osgParticle/ExplosionDebrisEffect.cpp index 94ce68199..25d661136 100644 --- a/src/osgParticle/ExplosionDebrisEffect.cpp +++ b/src/osgParticle/ExplosionDebrisEffect.cpp @@ -25,6 +25,21 @@ using namespace osgParticle; +ExplosionDebrisEffect::ExplosionDebrisEffect(bool automaticSetup): + ParticleEffect(automaticSetup) +{ + setDefaults(); + + _position.set(0.0f,0.0f,0.0f); + _scale = 1.0f; + _intensity = 1.0f; + + _emitterDuration = 0.1; + _defaultParticleTemplate.setLifeTime(1.0+0.6*_scale); + + if (_automaticSetup) buildEffect(); +} + ExplosionDebrisEffect::ExplosionDebrisEffect(const osg::Vec3& position, float scale, float intensity) { setDefaults(); @@ -36,7 +51,7 @@ ExplosionDebrisEffect::ExplosionDebrisEffect(const osg::Vec3& position, float sc _emitterDuration = 0.1; _defaultParticleTemplate.setLifeTime(1.0+0.6*_scale); - buildEffect(); + if (_automaticSetup) buildEffect(); } ExplosionDebrisEffect::ExplosionDebrisEffect(const ExplosionDebrisEffect& copy, const osg::CopyOp& copyop): diff --git a/src/osgParticle/ExplosionEffect.cpp b/src/osgParticle/ExplosionEffect.cpp index e0f06a4e9..0738f6ff9 100644 --- a/src/osgParticle/ExplosionEffect.cpp +++ b/src/osgParticle/ExplosionEffect.cpp @@ -27,6 +27,20 @@ using namespace osgParticle; +ExplosionEffect::ExplosionEffect(bool automaticSetup): + ParticleEffect(automaticSetup) +{ + setDefaults(); + + _position.set(0.0f,0.0f,0.0f); + _scale = 1.0f; + _intensity = 1.0f; + + _emitterDuration = 1.0; + + if (_automaticSetup) buildEffect(); +} + ExplosionEffect::ExplosionEffect(const osg::Vec3& position, float scale, float intensity) { setDefaults(); @@ -37,7 +51,7 @@ ExplosionEffect::ExplosionEffect(const osg::Vec3& position, float scale, float i _emitterDuration = 1.0; - buildEffect(); + if (_automaticSetup) buildEffect(); } ExplosionEffect::ExplosionEffect(const ExplosionEffect& copy, const osg::CopyOp& copyop): diff --git a/src/osgParticle/FireEffect.cpp b/src/osgParticle/FireEffect.cpp index c850e4248..b4eb1bdab 100644 --- a/src/osgParticle/FireEffect.cpp +++ b/src/osgParticle/FireEffect.cpp @@ -26,6 +26,21 @@ using namespace osgParticle; +FireEffect::FireEffect(bool automaticSetup): + ParticleEffect(automaticSetup) +{ + setDefaults(); + + _position.set(0.0f,0.0f,0.0f); + _scale = 1.0f; + _intensity = 1.0f; + + _emitterDuration = 60.0; + _defaultParticleTemplate.setLifeTime(0.5+0.1*_scale); + + if (_automaticSetup) buildEffect(); +} + FireEffect::FireEffect(const osg::Vec3& position, float scale, float intensity) { setDefaults(); @@ -37,7 +52,7 @@ FireEffect::FireEffect(const osg::Vec3& position, float scale, float intensity) _emitterDuration = 60.0; _defaultParticleTemplate.setLifeTime(0.5+0.1*_scale); - buildEffect(); + if (_automaticSetup) buildEffect(); } FireEffect::FireEffect(const FireEffect& copy, const osg::CopyOp& copyop): diff --git a/src/osgParticle/ParticleEffect.cpp b/src/osgParticle/ParticleEffect.cpp index 87ec33bb4..d4ac05239 100644 --- a/src/osgParticle/ParticleEffect.cpp +++ b/src/osgParticle/ParticleEffect.cpp @@ -18,9 +18,10 @@ using namespace osgParticle; ParticleEffect::ParticleEffect(const ParticleEffect& copy, const osg::CopyOp& copyop): - osg::Group(copy,copyop),/*, - _particleSystem(copy._particleSystem.valid()?copy._particleSystem->clone():0)*/ + osg::Group(copy,copyop), + _automaticSetup(copy._automaticSetup), _useLocalParticleSystem(copy._useLocalParticleSystem), + _textureFileName(copy._textureFileName), _defaultParticleTemplate(copy._defaultParticleTemplate), _position(copy._position), _scale(copy._scale), @@ -29,6 +30,7 @@ ParticleEffect::ParticleEffect(const ParticleEffect& copy, const osg::CopyOp& co _emitterDuration(copy._emitterDuration), _wind(copy._wind) { + if (_automaticSetup) buildEffect(); } void ParticleEffect::setUseLocalParticleSystem(bool local) @@ -36,19 +38,22 @@ void ParticleEffect::setUseLocalParticleSystem(bool local) if (_useLocalParticleSystem==local) return; _useLocalParticleSystem = local; - buildEffect(); + + if (_automaticSetup) buildEffect(); } void ParticleEffect::setTextureFileName(const std::string& filename) { _textureFileName = filename; - setUpEmitterAndProgram(); + + if (_automaticSetup) setUpEmitterAndProgram(); } void ParticleEffect::setDefaultParticleTemplate(const Particle& p) { _defaultParticleTemplate = p; - setUpEmitterAndProgram(); + + if (_automaticSetup) setUpEmitterAndProgram(); } void ParticleEffect::setPosition(const osg::Vec3& position) @@ -56,7 +61,8 @@ void ParticleEffect::setPosition(const osg::Vec3& position) if (_position==position) return; _position = position; - setUpEmitterAndProgram(); + + if (_automaticSetup) setUpEmitterAndProgram(); } void ParticleEffect::setScale(float scale) @@ -64,7 +70,8 @@ void ParticleEffect::setScale(float scale) if (_scale==scale) return; _scale = scale; - setUpEmitterAndProgram(); + + if (_automaticSetup) setUpEmitterAndProgram(); } void ParticleEffect::setIntensity(float intensity) @@ -72,7 +79,8 @@ void ParticleEffect::setIntensity(float intensity) if (_intensity==intensity) return; _intensity = intensity; - setUpEmitterAndProgram(); + + if (_automaticSetup) setUpEmitterAndProgram(); } void ParticleEffect::setStartTime(double startTime) @@ -80,7 +88,8 @@ void ParticleEffect::setStartTime(double startTime) if (_startTime==startTime) return; _startTime =startTime; - setUpEmitterAndProgram(); + + if (_automaticSetup) setUpEmitterAndProgram(); } void ParticleEffect::setEmitterDuration(double duration) @@ -88,7 +97,8 @@ void ParticleEffect::setEmitterDuration(double duration) if (_emitterDuration==duration) return; _emitterDuration = duration; - setUpEmitterAndProgram(); + + if (_automaticSetup) setUpEmitterAndProgram(); } void ParticleEffect::setParticleDuration(double duration) @@ -97,7 +107,7 @@ void ParticleEffect::setParticleDuration(double duration) _defaultParticleTemplate.setLifeTime(duration); - setUpEmitterAndProgram(); + if (_automaticSetup) setUpEmitterAndProgram(); } void ParticleEffect::setWind(const osg::Vec3& wind) @@ -105,7 +115,8 @@ void ParticleEffect::setWind(const osg::Vec3& wind) if (_wind==wind) return; _wind = wind; - setUpEmitterAndProgram(); + + if (_automaticSetup) setUpEmitterAndProgram(); } void ParticleEffect::setParticleSystem(ParticleSystem* ps) @@ -113,7 +124,8 @@ void ParticleEffect::setParticleSystem(ParticleSystem* ps) if (_particleSystem==ps) return; _particleSystem = ps; - buildEffect(); + + if (_automaticSetup) buildEffect(); } void ParticleEffect::setDefaults() @@ -130,9 +142,9 @@ void ParticleEffect::buildEffect() { setUpEmitterAndProgram(); - Emitter* emitter = getEmitter(); - Program* program = getProgram(); - ParticleSystem* particleSystem = getParticleSystem(); + osg::ref_ptr emitter = getEmitter(); + osg::ref_ptr program = getProgram(); + osg::ref_ptr particleSystem = getParticleSystem(); if (!emitter || !particleSystem || !program) return; @@ -141,21 +153,21 @@ void ParticleEffect::buildEffect() removeChild(0,getNumChildren()); // add the emitter - addChild(emitter); + addChild(emitter.get()); // add the program to update the particles - addChild(program); + addChild(program.get()); // add the particle system updater. - osgParticle::ParticleSystemUpdater *psu = new osgParticle::ParticleSystemUpdater; - psu->addParticleSystem(particleSystem); - addChild(psu); + osg::ref_ptr psu = new osgParticle::ParticleSystemUpdater; + psu->addParticleSystem(particleSystem.get()); + addChild(psu.get()); if (_useLocalParticleSystem) { // add the geode to the scene graph - osg::Geode *geode = new osg::Geode; - geode->addDrawable(particleSystem); + osg::Geode* geode = new osg::Geode; + geode->addDrawable(particleSystem.get()); addChild(geode); } } diff --git a/src/osgParticle/SmokeEffect.cpp b/src/osgParticle/SmokeEffect.cpp index ace6ef06e..0ae7cce05 100644 --- a/src/osgParticle/SmokeEffect.cpp +++ b/src/osgParticle/SmokeEffect.cpp @@ -22,6 +22,21 @@ using namespace osgParticle; +SmokeEffect::SmokeEffect(bool automaticSetup): + ParticleEffect(automaticSetup) +{ + setDefaults(); + + _position.set(0.0f,0.0f,0.0f); + _scale = 1.0f; + _intensity = 1.0f; + + _emitterDuration = 65.0; + _defaultParticleTemplate.setLifeTime(5.0*_scale); + + if (_automaticSetup) buildEffect(); +} + SmokeEffect::SmokeEffect(const osg::Vec3& position, float scale, float intensity) { setDefaults(); @@ -33,7 +48,7 @@ SmokeEffect::SmokeEffect(const osg::Vec3& position, float scale, float intensity _emitterDuration = 65.0; _defaultParticleTemplate.setLifeTime(5.0*_scale); - buildEffect(); + if (_automaticSetup) buildEffect(); } SmokeEffect::SmokeEffect(const SmokeEffect& copy, const osg::CopyOp& copyop): diff --git a/src/osgParticle/SmokeTrailEffect.cpp b/src/osgParticle/SmokeTrailEffect.cpp index c2389971e..965eeff58 100644 --- a/src/osgParticle/SmokeTrailEffect.cpp +++ b/src/osgParticle/SmokeTrailEffect.cpp @@ -23,6 +23,21 @@ using namespace osgParticle; +SmokeTrailEffect::SmokeTrailEffect(bool automaticSetup): + ParticleEffect(automaticSetup) +{ + setDefaults(); + + _position.set(0.0f,0.0f,0.0f); + _scale = 1.0f; + _intensity = 1.0f; + + _emitterDuration = 65.0; + _defaultParticleTemplate.setLifeTime(5.0*_scale); + + if (_automaticSetup) buildEffect(); +} + SmokeTrailEffect::SmokeTrailEffect(const osg::Vec3& position, float scale, float intensity) { setDefaults(); @@ -34,7 +49,7 @@ SmokeTrailEffect::SmokeTrailEffect(const osg::Vec3& position, float scale, float _emitterDuration = 65.0; _defaultParticleTemplate.setLifeTime(5.0*_scale); - buildEffect(); + if (_automaticSetup) buildEffect(); } SmokeTrailEffect::SmokeTrailEffect(const SmokeTrailEffect& copy, const osg::CopyOp& copyop): diff --git a/src/osgPlugins/osgParticle/IO_ExplosionDebrisEffect.cpp b/src/osgPlugins/osgParticle/IO_ExplosionDebrisEffect.cpp index 319b62302..36ab1623e 100644 --- a/src/osgPlugins/osgParticle/IO_ExplosionDebrisEffect.cpp +++ b/src/osgPlugins/osgParticle/IO_ExplosionDebrisEffect.cpp @@ -10,7 +10,7 @@ bool ExplosionDebrisEffect_writeLocalData(const osg::Object &obj, osgDB::Output osgDB::RegisterDotOsgWrapperProxy ExplosionDebrisEffect_Proxy ( - new osgParticle::ExplosionDebrisEffect, + new osgParticle::ExplosionDebrisEffect(false), "ExplosionDebrisEffect", "Object Node ParticleEffect ExplosionDebrisEffect", ExplosionDebrisEffect_readLocalData, diff --git a/src/osgPlugins/osgParticle/IO_ExplosionEffect.cpp b/src/osgPlugins/osgParticle/IO_ExplosionEffect.cpp index f6e2ab564..df6f8af3d 100644 --- a/src/osgPlugins/osgParticle/IO_ExplosionEffect.cpp +++ b/src/osgPlugins/osgParticle/IO_ExplosionEffect.cpp @@ -10,7 +10,7 @@ bool ExplosionEffect_writeLocalData(const osg::Object &obj, osgDB::Output &fw); osgDB::RegisterDotOsgWrapperProxy ExplosionEffect_Proxy ( - new osgParticle::ExplosionEffect, + new osgParticle::ExplosionEffect(false), "ExplosionEffect", "Object Node ParticleEffect ExplosionEffect", ExplosionEffect_readLocalData, diff --git a/src/osgPlugins/osgParticle/IO_FireEffect.cpp b/src/osgPlugins/osgParticle/IO_FireEffect.cpp index b00825af6..ce06f0ce2 100644 --- a/src/osgPlugins/osgParticle/IO_FireEffect.cpp +++ b/src/osgPlugins/osgParticle/IO_FireEffect.cpp @@ -10,7 +10,7 @@ bool FireEffect_writeLocalData(const osg::Object &obj, osgDB::Output &fw); osgDB::RegisterDotOsgWrapperProxy FireEffect_Proxy ( - new osgParticle::FireEffect, + new osgParticle::FireEffect(false), "FireEffect", "Object Node ParticleEffect FireEffect", FireEffect_readLocalData, diff --git a/src/osgPlugins/osgParticle/IO_ParticleEffect.cpp b/src/osgPlugins/osgParticle/IO_ParticleEffect.cpp index 4168e597c..b5f61b12f 100644 --- a/src/osgPlugins/osgParticle/IO_ParticleEffect.cpp +++ b/src/osgPlugins/osgParticle/IO_ParticleEffect.cpp @@ -177,7 +177,14 @@ bool ParticleEffect_readLocalData(osg::Object& object, osgDB::Input& fr) } } - + if (!effect.getAutomaticSetup()) + { + // since by default the clone of the ParticleEffect is done with automatic setup off to prevent premature loading of + // imagery, we still want to make sure the ParticleEffect is properly built so we'll now mannually enable the automatic setup + // run the buildEffect(). + effect.setAutomaticSetup(true); + effect.buildEffect(); + } return itrAdvanced; } diff --git a/src/osgPlugins/osgParticle/IO_SmokeEffect.cpp b/src/osgPlugins/osgParticle/IO_SmokeEffect.cpp index 7c012f5e3..755ea7dbb 100644 --- a/src/osgPlugins/osgParticle/IO_SmokeEffect.cpp +++ b/src/osgPlugins/osgParticle/IO_SmokeEffect.cpp @@ -10,7 +10,7 @@ bool SmokeEffect_writeLocalData(const osg::Object &obj, osgDB::Output &fw); osgDB::RegisterDotOsgWrapperProxy SmokeEffect_Proxy ( - new osgParticle::SmokeEffect, + new osgParticle::SmokeEffect(false), "SmokeEffect", "Object Node ParticleEffect SmokeEffect", SmokeEffect_readLocalData, diff --git a/src/osgPlugins/osgParticle/IO_SmokeTrailEffect.cpp b/src/osgPlugins/osgParticle/IO_SmokeTrailEffect.cpp index e2e28b3a5..c243baf59 100644 --- a/src/osgPlugins/osgParticle/IO_SmokeTrailEffect.cpp +++ b/src/osgPlugins/osgParticle/IO_SmokeTrailEffect.cpp @@ -10,7 +10,7 @@ bool SmokeTrailEffect_writeLocalData(const osg::Object &obj, osgDB::Output &fw) osgDB::RegisterDotOsgWrapperProxy SmokeTrailEffect_Proxy ( - new osgParticle::SmokeTrailEffect, + new osgParticle::SmokeTrailEffect(false), "SmokeTrailEffect", "Object Node ParticleEffect SmokeTrailEffect", SmokeTrailEffect_readLocalData, diff --git a/src/osgWrappers/osgParticle/ExplosionDebrisEffect.cpp b/src/osgWrappers/osgParticle/ExplosionDebrisEffect.cpp index 562c90e1c..9e5344ed9 100644 --- a/src/osgWrappers/osgParticle/ExplosionDebrisEffect.cpp +++ b/src/osgWrappers/osgParticle/ExplosionDebrisEffect.cpp @@ -27,7 +27,8 @@ BEGIN_OBJECT_REFLECTOR(osgParticle::ExplosionDebrisEffect) I_BaseType(osgParticle::ParticleEffect); - I_ConstructorWithDefaults3(IN, const osg::Vec3 &, position, osg::Vec3(0.0f, 0.0f, 0.0f), IN, float, scale, 1.0f, IN, float, intensity, 1.0f); + I_ConstructorWithDefaults1(IN, bool, automaticSetup, true); + I_ConstructorWithDefaults3(IN, const osg::Vec3 &, position, , IN, float, scale, 1.0f, IN, float, intensity, 1.0f); I_ConstructorWithDefaults2(IN, const osgParticle::ExplosionDebrisEffect &, copy, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY); I_Method0(osg::Object *, cloneType); I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, copyop); diff --git a/src/osgWrappers/osgParticle/ExplosionEffect.cpp b/src/osgWrappers/osgParticle/ExplosionEffect.cpp index c8c09c285..bdc6d320e 100644 --- a/src/osgWrappers/osgParticle/ExplosionEffect.cpp +++ b/src/osgWrappers/osgParticle/ExplosionEffect.cpp @@ -27,7 +27,8 @@ BEGIN_OBJECT_REFLECTOR(osgParticle::ExplosionEffect) I_BaseType(osgParticle::ParticleEffect); - I_ConstructorWithDefaults3(IN, const osg::Vec3 &, position, osg::Vec3(0.0f, 0.0f, 0.0f), IN, float, scale, 1.0f, IN, float, intensity, 1.0f); + I_ConstructorWithDefaults1(IN, bool, automaticSetup, true); + I_ConstructorWithDefaults3(IN, const osg::Vec3 &, position, , IN, float, scale, 1.0f, IN, float, intensity, 1.0f); I_ConstructorWithDefaults2(IN, const osgParticle::ExplosionEffect &, copy, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY); I_Method0(osg::Object *, cloneType); I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, copyop); diff --git a/src/osgWrappers/osgParticle/FireEffect.cpp b/src/osgWrappers/osgParticle/FireEffect.cpp index c65412e52..e810ca3ca 100644 --- a/src/osgWrappers/osgParticle/FireEffect.cpp +++ b/src/osgWrappers/osgParticle/FireEffect.cpp @@ -27,7 +27,8 @@ BEGIN_OBJECT_REFLECTOR(osgParticle::FireEffect) I_BaseType(osgParticle::ParticleEffect); - I_ConstructorWithDefaults3(IN, const osg::Vec3 &, position, osg::Vec3(0.0f, 0.0f, 0.0f), IN, float, scale, 1.0f, IN, float, intensity, 1.0f); + I_ConstructorWithDefaults1(IN, bool, automaticSetup, true); + I_ConstructorWithDefaults3(IN, const osg::Vec3 &, position, , IN, float, scale, 1.0f, IN, float, intensity, 1.0f); I_ConstructorWithDefaults2(IN, const osgParticle::FireEffect &, copy, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY); I_Method0(osg::Object *, cloneType); I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, copyop); diff --git a/src/osgWrappers/osgParticle/ParticleEffect.cpp b/src/osgWrappers/osgParticle/ParticleEffect.cpp index 1c3b6d056..950ca0ab6 100644 --- a/src/osgWrappers/osgParticle/ParticleEffect.cpp +++ b/src/osgWrappers/osgParticle/ParticleEffect.cpp @@ -29,12 +29,14 @@ BEGIN_ABSTRACT_OBJECT_REFLECTOR(osgParticle::ParticleEffect) I_BaseType(osg::Group); - I_Constructor0(); + I_ConstructorWithDefaults1(IN, bool, automaticSetup, true); I_ConstructorWithDefaults2(IN, const osgParticle::ParticleEffect &, copy, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY); I_Method0(const char *, libraryName); I_Method0(const char *, className); I_Method1(bool, isSameKindAs, IN, const osg::Object *, obj); I_Method1(void, accept, IN, osg::NodeVisitor &, nv); + I_Method1(void, setAutomaticSetup, IN, bool, flag); + I_Method0(bool, getAutomaticSetup); I_Method1(void, setUseLocalParticleSystem, IN, bool, local); I_Method0(bool, getUseLocalParticleSystem); I_Method1(void, setTextureFileName, IN, const std::string &, filename); @@ -66,6 +68,7 @@ BEGIN_ABSTRACT_OBJECT_REFLECTOR(osgParticle::ParticleEffect) I_Method0(void, setDefaults); I_Method0(void, setUpEmitterAndProgram); I_Method0(void, buildEffect); + I_Property(bool, AutomaticSetup); I_Property(const osgParticle::Particle &, DefaultParticleTemplate); I_ReadOnlyProperty(osgParticle::Emitter *, Emitter); I_Property(double, EmitterDuration); diff --git a/src/osgWrappers/osgParticle/SmokeEffect.cpp b/src/osgWrappers/osgParticle/SmokeEffect.cpp index 21ac13559..f525b4c42 100644 --- a/src/osgWrappers/osgParticle/SmokeEffect.cpp +++ b/src/osgWrappers/osgParticle/SmokeEffect.cpp @@ -27,7 +27,8 @@ BEGIN_OBJECT_REFLECTOR(osgParticle::SmokeEffect) I_BaseType(osgParticle::ParticleEffect); - I_ConstructorWithDefaults3(IN, const osg::Vec3 &, position, osg::Vec3(0.0f, 0.0f, 0.0f), IN, float, scale, 1.0f, IN, float, intensity, 1.0f); + I_ConstructorWithDefaults1(IN, bool, automaticSetup, true); + I_ConstructorWithDefaults3(IN, const osg::Vec3 &, position, , IN, float, scale, 1.0f, IN, float, intensity, 1.0f); I_ConstructorWithDefaults2(IN, const osgParticle::SmokeEffect &, copy, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY); I_Method0(osg::Object *, cloneType); I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, copyop); diff --git a/src/osgWrappers/osgParticle/SmokeTrailEffect.cpp b/src/osgWrappers/osgParticle/SmokeTrailEffect.cpp index c2457996f..15f927451 100644 --- a/src/osgWrappers/osgParticle/SmokeTrailEffect.cpp +++ b/src/osgWrappers/osgParticle/SmokeTrailEffect.cpp @@ -27,7 +27,8 @@ BEGIN_OBJECT_REFLECTOR(osgParticle::SmokeTrailEffect) I_BaseType(osgParticle::ParticleEffect); - I_ConstructorWithDefaults3(IN, const osg::Vec3 &, position, osg::Vec3(0.0f, 0.0f, 0.0f), IN, float, scale, 1.0f, IN, float, intensity, 1.0f); + I_ConstructorWithDefaults1(IN, bool, automaticSetup, true); + I_ConstructorWithDefaults3(IN, const osg::Vec3 &, position, , IN, float, scale, 1.0f, IN, float, intensity, 1.0f); I_ConstructorWithDefaults2(IN, const osgParticle::SmokeTrailEffect &, copy, , IN, const osg::CopyOp &, copyop, osg::CopyOp::SHALLOW_COPY); I_Method0(osg::Object *, cloneType); I_Method1(osg::Object *, clone, IN, const osg::CopyOp &, copyop);