bool Emitter_readLocalData(osg::Object &obj, osgDB::Input &fr) { osgParticle::Emitter &myobj = static_cast<osgParticle::Emitter &>(obj); bool itAdvanced = false; if (fr[0].matchWord("useDefaultTemplate")) { if (fr[1].matchWord("TRUE")) { myobj.setUseDefaultTemplate(true); fr += 2; itAdvanced = true; } if (fr[1].matchWord("FALSE")) { myobj.setUseDefaultTemplate(false); fr += 2; itAdvanced = true; } } if (fr[0].matchWord("particleTemplate")) { ++fr; itAdvanced = true; osgParticle::Particle P; if (read_particle(fr, P)) { myobj.setParticleTemplate(P); } } return itAdvanced; }
bool ParticleSystem_readLocalData(osg::Object &obj, osgDB::Input &fr) { osgParticle::ParticleSystem &myobj = static_cast<osgParticle::ParticleSystem &>(obj); bool itAdvanced = false; if (fr[0].matchWord("particleAlignment")) { if (fr[1].matchWord("BILLBOARD")) { myobj.setParticleAlignment(osgParticle::ParticleSystem::BILLBOARD); fr += 2; itAdvanced = true; } if (fr[1].matchWord("FIXED")) { myobj.setParticleAlignment(osgParticle::ParticleSystem::FIXED); fr += 2; itAdvanced = true; } } if (fr[0].matchWord("particleScaleReferenceFrame")) { if (fr[1].matchWord("LOCAL_COORDINATES")) { myobj.setParticleScaleReferenceFrame(osgParticle::ParticleSystem::LOCAL_COORDINATES); fr += 2; itAdvanced = true; } if (fr[1].matchWord("")) { myobj.setParticleScaleReferenceFrame(osgParticle::ParticleSystem::WORLD_COORDINATES); fr += 2; itAdvanced = true; } } if (fr[0].matchWord("alignVectorX")) { osg::Vec3 v; if (fr[1].getFloat(v.x()) && fr[2].getFloat(v.y()) && fr[3].getFloat(v.z())) { myobj.setAlignVectorX(v); fr += 4; itAdvanced = true; } } if (fr[0].matchWord("alignVectorY")) { osg::Vec3 v; if (fr[1].getFloat(v.x()) && fr[2].getFloat(v.y()) && fr[3].getFloat(v.z())) { myobj.setAlignVectorY(v); fr += 4; itAdvanced = true; } } if (fr[0].matchWord("doublePassRendering")) { if (fr[1].matchWord("TRUE")) { myobj.setDoublePassRendering(true); fr += 2; itAdvanced = true; } else if (fr[1].matchWord("FALSE")) { myobj.setDoublePassRendering(false); fr += 2; itAdvanced = true; } } if (fr[0].matchWord("frozen")) { if (fr[1].matchWord("TRUE")) { myobj.setFrozen(true); fr += 2; itAdvanced = true; } else if (fr[1].matchWord("FALSE")) { myobj.setFrozen(false); // this might not be necessary fr += 2; itAdvanced = true; } } if (fr[0].matchWord("freezeOnCull")) { if (fr[1].matchWord("TRUE")) { myobj.setFreezeOnCull(true); fr += 2; itAdvanced = true; } else if (fr[1].matchWord("FALSE")) { myobj.setFreezeOnCull(false); fr += 2; itAdvanced = true; } } if (fr[0].matchWord("defaultBoundingBox")) { osg::BoundingBox bbox; if ( fr[1].getFloat(bbox.xMin()) && fr[2].getFloat(bbox.yMin()) && fr[3].getFloat(bbox.zMin()) && fr[4].getFloat(bbox.xMax()) && fr[5].getFloat(bbox.yMax()) && fr[6].getFloat(bbox.zMax()) ) { myobj.setDefaultBoundingBox(bbox); fr += 7; itAdvanced = true; } } if (fr[0].matchWord("particleTemplate")) { ++fr; itAdvanced = true; osgParticle::Particle P; if (read_particle(fr, P)) { myobj.setDefaultParticleTemplate(P); } } return itAdvanced; }