diff --git a/direct/src/particles/ForceGroup.py b/direct/src/particles/ForceGroup.py index c42e336909..dc6b136b43 100644 --- a/direct/src/particles/ForceGroup.py +++ b/direct/src/particles/ForceGroup.py @@ -107,9 +107,9 @@ class ForceGroup(DirectObject): ftype = 'FTONEOVERRCUBED' forceCenter = f.getForceCenter() if isinstance(f, LinearSinkForce): - file.write(fname + ' = LinearSinkForce(Vec3(%.4f, %.4f, %.4f), LinearDistanceForce.%s, %.4f, %.4f, %d)\n' % (forceCenter[0], forceCenter[1], forceCenter[2], ftype, radius, amplitude, massDependent)) + file.write(fname + ' = LinearSinkForce(Point3(%.4f, %.4f, %.4f), LinearDistanceForce.%s, %.4f, %.4f, %d)\n' % (forceCenter[0], forceCenter[1], forceCenter[2], ftype, radius, amplitude, massDependent)) elif isinstance(f, LinearSourceForce): - file.write(fname + ' = LinearSourceForce(Vec3(%.4f, %.4f, %.4f), LinearDistanceForce.%s, %.4f, %.4f, %d)\n' % (forceCenter[0], forceCenter[1], forceCenter[2], ftype, radius, amplitude, massDependent)) + file.write(fname + ' = LinearSourceForce(Point3(%.4f, %.4f, %.4f), LinearDistanceForce.%s, %.4f, %.4f, %d)\n' % (forceCenter[0], forceCenter[1], forceCenter[2], ftype, radius, amplitude, massDependent)) elif isinstance(f, LinearFrictionForce): file.write(fname + ' = LinearFrictionForce(%.4f, %.4f, %d)\n' % (f.getCoef(), amplitude, massDependent)) elif isinstance(f, LinearJitterForce): @@ -117,7 +117,7 @@ class ForceGroup(DirectObject): elif isinstance(f, LinearNoiseForce): file.write(fname + ' = LinearNoiseForce(%.4f, %d)\n' % (amplitude, massDependent)) elif isinstance(f, LinearVectorForce): - vec = f.getVector() + vec = f.getLocalVector() file.write(fname + ' = LinearVectorForce(Vec3(%.4f, %.4f, %.4f), %.4f, %d)\n' % (vec[0], vec[1], vec[2], amplitude, massDependent)) elif isinstance(f, AngularForce): if isinstance(f, AngularVectorForce): diff --git a/direct/src/particles/ParticleEffect.py b/direct/src/particles/ParticleEffect.py index 2b86259dc6..d435d91d99 100644 --- a/direct/src/particles/ParticleEffect.py +++ b/direct/src/particles/ParticleEffect.py @@ -133,6 +133,16 @@ class ParticleEffect(NodePath): f.write('self.particlesDict = {}\n') f.write('self.forceGroupDict = {}\n') + pos = self.getPos() + hpr = self.getHpr() + scale = self.getScale() + f.write('self.setPos(%0.3f, %0.3f, %0.3f)\n' % + (pos[0], pos[1], pos[2])) + f.write('self.setHpr(%0.3f, %0.3f, %0.3f)\n' % + (hpr[0], hpr[1], hpr[2])) + f.write('self.setScale(%0.3f, %0.3f, %0.3f)\n' % + (scale[0], scale[1], scale[2])) + # Save all the particles to file num = 0 for p in self.particlesDict.values(): diff --git a/direct/src/particles/Particles.py b/direct/src/particles/Particles.py index 236592219b..c11c3bd505 100644 --- a/direct/src/particles/Particles.py +++ b/direct/src/particles/Particles.py @@ -200,8 +200,24 @@ class Particles(ParticleSystem.ParticleSystem): file.write(targ + '.setRenderer(\"' + self.rendererType + '\")\n') file.write(targ + '.setEmitter(\"' + self.emitterType + '\")\n') + # System parameters + file.write(targ + ('.setPoolSize(%d)\n' % + int(self.getPoolSize()))) + file.write(targ + ('.setBirthRate(%.4f)\n' % + self.getBirthRate())) + file.write(targ + ('.setLitterSize(%d)\n' % + int(self.getLitterSize()))) + file.write(targ + ('.setLitterSpread(%d)\n' % + self.getLitterSpread())) + file.write(targ + ('.setSystemLifespan(%.4f)\n' % + self.getSystemLifespan())) + file.write(targ + ('.setLocalVelocityFlag(%d)\n' % + self.getLocalVelocityFlag())) + file.write(targ + ('.setSystemGrowsOlderFlag(%d)\n' % + self.getSystemGrowsOlderFlag())) file.write('# Factory parameters\n') - file.write(targ + '.factory.setLifespanBase(%.4f)\n' % self.factory.getLifespanBase()) + file.write(targ + ('.factory.setLifespanBase(%.4f)\n' % + self.factory.getLifespanBase())) file.write(targ + '.factory.setLifespanSpread(%.4f)\n' % self.factory.getLifespanSpread()) file.write(targ + '.factory.setMassBase(%.4f)\n' % self.factory.getMassBase()) file.write(targ + '.factory.setMassSpread(%.4f)\n' % self.factory.getMassSpread()) diff --git a/direct/src/tkpanels/ParticlePanel.py b/direct/src/tkpanels/ParticlePanel.py index cecf47b476..f991a2e586 100644 --- a/direct/src/tkpanels/ParticlePanel.py +++ b/direct/src/tkpanels/ParticlePanel.py @@ -975,6 +975,12 @@ class ParticlePanel(AppShell): title = 'Load Particle Effect', parent = self.parent) if particleFilename: + # Delete existing particles and forces + pe = self.particleEffect + for p in pe.getParticlesList(): + pe.removeParticles(p) + for fg in pe.getForceGroupList(): + pe.removeForceGroup(fg) self.particleEffect.loadConfig(Filename(particleFilename)) self.selectEffectNamed(self.particleEffect.getName()) @@ -1718,7 +1724,7 @@ class ParticlePanel(AppShell): forceName = 'Vector Force-' + `count` frame = self.createForceFrame(forcePage, forceName, force) self.createLinearForceWidgets(frame, pageName, forceName, force) - vec = force.getVector() + vec = force.getLocalVector() self.createVector3Entry(frame, pageName, forceName, 'Set force direction and magnitude', command = setVec,