Browse Source

*** empty log message ***

Mike Goslin 25 years ago
parent
commit
de5434a487
2 changed files with 21 additions and 13 deletions
  1. 14 11
      direct/src/showbase/Particles.py
  2. 7 2
      direct/src/tkpanels/ParticlePanel.py

+ 14 - 11
direct/src/showbase/Particles.py

@@ -58,7 +58,7 @@ class Particles(ParticleSystem.ParticleSystem):
 	self.node = PhysicalNode.PhysicalNode()
 	self.node = PhysicalNode.PhysicalNode()
 	self.node.addPhysical(self)
 	self.node.addPhysical(self)
 	self.nodePath = hidden.attachNewNode(self.node)
 	self.nodePath = hidden.attachNewNode(self.node)
-	#self.forceNode = ForceNode.ForceNode()
+	self.forceNode = ForceNode.ForceNode()
 
 
 	self.integrator = LinearEulerIntegrator.LinearEulerIntegrator()
 	self.integrator = LinearEulerIntegrator.LinearEulerIntegrator()
 
 
@@ -68,6 +68,11 @@ class Particles(ParticleSystem.ParticleSystem):
 	particleMgr.setFrameStepping(1)
 	particleMgr.setFrameStepping(1)
 	particleMgr.attachParticlesystem(self)
 	particleMgr.attachParticlesystem(self)
 
 
+    def cleanup(self):
+	"""cleanup(self)"""
+	physicsMgr.removePhysical(self)
+	particleMgr.removeParticlesystem(self)
+
     def setFactory(self, type):
     def setFactory(self, type):
 	"""setFactory(self, type)"""
 	"""setFactory(self, type)"""
 	if (self.factoryType == type):
 	if (self.factoryType == type):
@@ -99,20 +104,21 @@ class Particles(ParticleSystem.ParticleSystem):
 	    self.renderer.setPointSize(1.0)
 	    self.renderer.setPointSize(1.0)
 	elif (type == "LineParticleRenderer"):
 	elif (type == "LineParticleRenderer"):
 	    self.renderer = LineParticleRenderer.LineParticleRenderer()
 	    self.renderer = LineParticleRenderer.LineParticleRenderer()
-	    self.renderer.setHeadColor(Vec4(1.0, 1.0, 1.0, 1.0))
-	    self.renderer.setTailColor(Vec4(1.0, 1.0, 1.0, 1.0))
+	    self.renderer.setPointSize(1.0)
 	elif (type == "GeomParticleRenderer"):
 	elif (type == "GeomParticleRenderer"):
 	    self.renderer = GeomParticleRenderer.GeomParticleRenderer()
 	    self.renderer = GeomParticleRenderer.GeomParticleRenderer()
 	elif (type == "SparkleParticleRenderer"):
 	elif (type == "SparkleParticleRenderer"):
 	    self.renderer = SparkleParticleRenderer.SparkleParticleRenderer()
 	    self.renderer = SparkleParticleRenderer.SparkleParticleRenderer()
 	elif (type == "SpriteParticleRenderer"):
 	elif (type == "SpriteParticleRenderer"):
 	    self.renderer = SpriteParticleRenderer.SpriteParticleRenderer()
 	    self.renderer = SpriteParticleRenderer.SpriteParticleRenderer()
+	    t = loader.loadTexture("I:/beta/toons/install/maps/evil_eye.rgb")
+	    if (t == None):
+		print "Couldn't find default texture: evil_eye.rgb!"
+		return None
+	    self.renderer.setTexture(t)
 	else:
 	else:
 	    print "unknown renderer type: %s" % type
 	    print "unknown renderer type: %s" % type
 	    return None
 	    return None
-	#self.renderer.setAlphaMode(
-        #BaseParticleRenderer.BaseParticleRenderer.PRALPHAUSER)
-	#self.renderer.setUserAlpha(1.0)
 	ParticleSystem.ParticleSystem.setRenderer(self, self.renderer)
 	ParticleSystem.ParticleSystem.setRenderer(self, self.renderer)
 
 
     def setEmitter(self, type):
     def setEmitter(self, type):
@@ -144,15 +150,11 @@ class Particles(ParticleSystem.ParticleSystem):
 	else:
 	else:
 	    print "unknown emitter type: %s" % type
 	    print "unknown emitter type: %s" % type
 	    return None
 	    return None
-	#self.emitter.setEmissionType(
-        #BaseParticleEmitter.BaseParticleEmitter.ETEXPLICIT)
-	#self.emitter.setExplicitLaunchVector(Vec3(-1.0, -1.0, 1.0))
-	#self.emitter.setAmplitude(1.0)
 	ParticleSystem.ParticleSystem.setEmitter(self, self.emitter)
 	ParticleSystem.ParticleSystem.setEmitter(self, self.emitter)
 
 
     def __update(self, state):
     def __update(self, state):
 	"""update(self, state)"""
 	"""update(self, state)"""
-        dt = globalClock.getDt()
+        dt = min(globalClock.getDt(), 0.1)
         physicsMgr.doPhysics(dt)
         physicsMgr.doPhysics(dt)
         particleMgr.doParticles(dt)
         particleMgr.doParticles(dt)
         return Task.cont
         return Task.cont
@@ -163,6 +165,7 @@ class Particles(ParticleSystem.ParticleSystem):
 
 
     def start(self):
     def start(self):
 	"""start(self)"""
 	"""start(self)"""
+	self.stop()
 	taskMgr.spawnTaskNamed(Task.Task(self.__update), 'update-particles')
 	taskMgr.spawnTaskNamed(Task.Task(self.__update), 'update-particles')
 
 
     def stop(self):
     def stop(self):

+ 7 - 2
direct/src/tkpanels/ParticlePanel.py

@@ -799,6 +799,8 @@ class ParticlePanel(AppShell):
         elif isinstance(renderer, SpriteParticleRenderer):
         elif isinstance(renderer, SpriteParticleRenderer):
             color = renderer.getColor() * 255.0
             color = renderer.getColor() * 255.0
             texture = renderer.getTexture()
             texture = renderer.getTexture()
+	    if (texture != None):
+		self.rendererSpriteTexture = texture.getName()
             self.rendererSpriteXScale.set(renderer.getXScaleFlag())
             self.rendererSpriteXScale.set(renderer.getXScaleFlag())
             self.rendererSpriteYScale.set(renderer.getYScaleFlag())
             self.rendererSpriteYScale.set(renderer.getYScaleFlag())
             self.rendererSpriteAnimAngle.set(renderer.getAnimAngleFlag())
             self.rendererSpriteAnimAngle.set(renderer.getAnimAngleFlag())
@@ -894,8 +896,11 @@ class ParticlePanel(AppShell):
 	self.particles.renderer.setLifeScale(lScale)
 	self.particles.renderer.setLifeScale(lScale)
     # Sprite #
     # Sprite #
     def setRendererSpriteTexture(self, event):
     def setRendererSpriteTexture(self, event):
-	self.particles.renderer.setTexture(
-            self.rendererSpriteTexture.get())
+	t = loader.loadTexture(self.rendererSpriteTexture.get())
+	if (t != None):
+	    self.particles.renderer.setTexture(t)
+	else:
+	    print "Couldn't find rendererSpriteTexture"
     def toggleRendererSpriteXScale(self):
     def toggleRendererSpriteXScale(self):
 	self.particles.renderer.setXScaleFlag(
 	self.particles.renderer.setXScaleFlag(
             self.rendererSpriteXScale.get())
             self.rendererSpriteXScale.get())