mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
*** empty log message ***
This commit is contained in:
parent
157d36d7ac
commit
f71713944e
@ -31,6 +31,8 @@ import LinearEulerIntegrator
|
|||||||
import ClockObject
|
import ClockObject
|
||||||
|
|
||||||
globalClock = ClockObject.ClockObject.getGlobalClock()
|
globalClock = ClockObject.ClockObject.getGlobalClock()
|
||||||
|
SparkleParticleRenderer.SparkleParticleRenderer.SPNOSCALE = 0
|
||||||
|
SparkleParticleRenderer.SparkleParticleRenderer.SPSCALE = 1
|
||||||
|
|
||||||
class Particles(ParticleSystem.ParticleSystem):
|
class Particles(ParticleSystem.ParticleSystem):
|
||||||
|
|
||||||
@ -45,13 +47,13 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||||||
|
|
||||||
self.factory = None
|
self.factory = None
|
||||||
self.factoryType = "undefined"
|
self.factoryType = "undefined"
|
||||||
self.setFactory("Point")
|
self.setFactory("PointParticleFactory")
|
||||||
self.renderer = None
|
self.renderer = None
|
||||||
self.rendererType = "undefined"
|
self.rendererType = "undefined"
|
||||||
self.setRenderer("Line")
|
self.setRenderer("PointParticleRenderer")
|
||||||
self.emitter = None
|
self.emitter = None
|
||||||
self.emitterType = "undefined"
|
self.emitterType = "undefined"
|
||||||
self.setEmitter("Sphere Volume")
|
self.setEmitter("SphereVolumeEmitter")
|
||||||
|
|
||||||
self.node = PhysicalNode.PhysicalNode()
|
self.node = PhysicalNode.PhysicalNode()
|
||||||
self.node.addPhysical(self)
|
self.node.addPhysical(self)
|
||||||
@ -73,16 +75,16 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||||||
if (self.factory):
|
if (self.factory):
|
||||||
self.factory = None
|
self.factory = None
|
||||||
self.factoryType = type
|
self.factoryType = type
|
||||||
if (type == "Point"):
|
if (type == "PointParticleFactory"):
|
||||||
self.factory = PointParticleFactory.PointParticleFactory()
|
self.factory = PointParticleFactory.PointParticleFactory()
|
||||||
elif (type == "Z Spin"):
|
elif (type == "ZSpinParticleFactory"):
|
||||||
self.factory = ZSpinParticleFactory.ZSpinParticleFactory()
|
self.factory = ZSpinParticleFactory.ZSpinParticleFactory()
|
||||||
elif (type == "Oriented"):
|
elif (type == "OrientedParticleFactory"):
|
||||||
self.factory = OrientedParticleFactory.OrientedParticleFactory()
|
self.factory = OrientedParticleFactory.OrientedParticleFactory()
|
||||||
else:
|
else:
|
||||||
print "unknown factory type: %s" % type
|
print "unknown factory type: %s" % type
|
||||||
return None
|
return None
|
||||||
#self.factory.setLifespanBase(0.5)
|
self.factory.setLifespanBase(0.5)
|
||||||
ParticleSystem.ParticleSystem.setFactory(self, self.factory)
|
ParticleSystem.ParticleSystem.setFactory(self, self.factory)
|
||||||
|
|
||||||
def setRenderer(self, type):
|
def setRenderer(self, type):
|
||||||
@ -92,18 +94,18 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||||||
if (self.renderer):
|
if (self.renderer):
|
||||||
self.renderer = None
|
self.renderer = None
|
||||||
self.rendererType = type
|
self.rendererType = type
|
||||||
if (type == "Point"):
|
if (type == "PointParticleRenderer"):
|
||||||
self.renderer = PointParticleRenderer.PointParticleRenderer()
|
self.renderer = PointParticleRenderer.PointParticleRenderer()
|
||||||
self.renderer.setPointSize(1.0)
|
self.renderer.setPointSize(1.0)
|
||||||
elif (type == "Line"):
|
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.setHeadColor(Vec4(1.0, 1.0, 1.0, 1.0))
|
||||||
self.renderer.setTailColor(Vec4(1.0, 1.0, 1.0, 1.0))
|
self.renderer.setTailColor(Vec4(1.0, 1.0, 1.0, 1.0))
|
||||||
elif (type == "Geom"):
|
elif (type == "GeomParticleRenderer"):
|
||||||
self.renderer = GeomParticleRenderer.GeomParticleRenderer()
|
self.renderer = GeomParticleRenderer.GeomParticleRenderer()
|
||||||
elif (type == "Sparkle"):
|
elif (type == "SparkleParticleRenderer"):
|
||||||
self.renderer = SparkleParticleRenderer.SparkleParticleRenderer()
|
self.renderer = SparkleParticleRenderer.SparkleParticleRenderer()
|
||||||
elif (type == "Sprite"):
|
elif (type == "SpriteParticleRenderer"):
|
||||||
self.renderer = SpriteParticleRenderer.SpriteParticleRenderer()
|
self.renderer = SpriteParticleRenderer.SpriteParticleRenderer()
|
||||||
else:
|
else:
|
||||||
print "unknown renderer type: %s" % type
|
print "unknown renderer type: %s" % type
|
||||||
@ -120,24 +122,24 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||||||
if (self.emitter):
|
if (self.emitter):
|
||||||
self.emitter = None
|
self.emitter = None
|
||||||
self.emitterType = type
|
self.emitterType = type
|
||||||
if (type == "Box"):
|
if (type == "BoxEmitter"):
|
||||||
self.emitter = BoxEmitter.BoxEmitter()
|
self.emitter = BoxEmitter.BoxEmitter()
|
||||||
elif (type == "Disc"):
|
elif (type == "DiscEmitter"):
|
||||||
self.emitter = DiscEmitter.DiscEmitter()
|
self.emitter = DiscEmitter.DiscEmitter()
|
||||||
elif (type == "Line"):
|
elif (type == "LineEmitter"):
|
||||||
self.emitter = LineEmitter.LineEmitter()
|
self.emitter = LineEmitter.LineEmitter()
|
||||||
elif (type == "Point"):
|
elif (type == "PointEmitter"):
|
||||||
self.emitter = PointEmitter.PointEmitter()
|
self.emitter = PointEmitter.PointEmitter()
|
||||||
elif (type == "Rectangle"):
|
elif (type == "RectangleEmitter"):
|
||||||
self.emitter = RectangleEmitter.RectangleEmitter()
|
self.emitter = RectangleEmitter.RectangleEmitter()
|
||||||
elif (type == "Ring"):
|
elif (type == "RingEmitter"):
|
||||||
self.emitter = RingEmitter.RingEmitter()
|
self.emitter = RingEmitter.RingEmitter()
|
||||||
elif (type == "Sphere Surface"):
|
elif (type == "SphereSurfaceEmitter"):
|
||||||
self.emitter = SphereSurfaceEmitter.SphereSurfaceEmitter()
|
self.emitter = SphereSurfaceEmitter.SphereSurfaceEmitter()
|
||||||
elif (type == "Sphere Volume"):
|
elif (type == "SphereVolumeEmitter"):
|
||||||
self.emitter = SphereVolumeEmitter.SphereVolumeEmitter()
|
self.emitter = SphereVolumeEmitter.SphereVolumeEmitter()
|
||||||
self.emitter.setRadius(1.0)
|
self.emitter.setRadius(1.0)
|
||||||
elif (type == "Tangent Ring"):
|
elif (type == "TangentRingEmitter"):
|
||||||
self.emitter = TangentRingEmitter.TangentRingEmitter()
|
self.emitter = TangentRingEmitter.TangentRingEmitter()
|
||||||
else:
|
else:
|
||||||
print "unknown emitter type: %s" % type
|
print "unknown emitter type: %s" % type
|
||||||
@ -176,15 +178,15 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||||||
print "factory.setMassSpread(%f)" % self.factory.getMassSpread()
|
print "factory.setMassSpread(%f)" % self.factory.getMassSpread()
|
||||||
print "factory.setTerminalVelocityBase(%f)" % self.factory.getTerminalVelocityBase()
|
print "factory.setTerminalVelocityBase(%f)" % self.factory.getTerminalVelocityBase()
|
||||||
print "factory.setTerminalVelocitySpread(%f)" % self.factory.getTerminalVelocitySpread()
|
print "factory.setTerminalVelocitySpread(%f)" % self.factory.getTerminalVelocitySpread()
|
||||||
if (self.factoryType == "Point"):
|
if (self.factoryType == "PointParticleFactory"):
|
||||||
print "# Point factory parameters"
|
print "# Point factory parameters"
|
||||||
elif (self.factoryType == "Z Spin"):
|
elif (self.factoryType == "ZSpinParticleFactory"):
|
||||||
print "# Z Spin factory parameters"
|
print "# Z Spin factory parameters"
|
||||||
print "factory.setInitialAngle(%f)" % self.factory.getInitialAngle()
|
print "factory.setInitialAngle(%f)" % self.factory.getInitialAngle()
|
||||||
print "factory.setFinalAngle(%f)" % self.factory.getFinalAngle()
|
print "factory.setFinalAngle(%f)" % self.factory.getFinalAngle()
|
||||||
print "factory.setInitialAngleSpread(%f)" % self.factory.getInitialAngleSpread()
|
print "factory.setInitialAngleSpread(%f)" % self.factory.getInitialAngleSpread()
|
||||||
print "factory.setFinalAngleSpread(%f)" % self.factory.getFinalAngleSpread()
|
print "factory.setFinalAngleSpread(%f)" % self.factory.getFinalAngleSpread()
|
||||||
elif (self.factoryType == "Oriented"):
|
elif (self.factoryType == "OrientedParticleFactory"):
|
||||||
print "# Oriented factory parameters"
|
print "# Oriented factory parameters"
|
||||||
print 'factory.setInitialOrientation(' + self.factory.getInitialOrientation + ')'
|
print 'factory.setInitialOrientation(' + self.factory.getInitialOrientation + ')'
|
||||||
print 'factory.setFinalOrientation(' + self.factory.getFinalOrientation + ')'
|
print 'factory.setFinalOrientation(' + self.factory.getFinalOrientation + ')'
|
||||||
@ -230,17 +232,17 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||||||
elif (blendMethod == BaseParticleRenderer.BaseParticleRenderer.PPBLENDCUBIC):
|
elif (blendMethod == BaseParticleRenderer.BaseParticleRenderer.PPBLENDCUBIC):
|
||||||
bMethod = "PP_BLEND_CUBIC"
|
bMethod = "PP_BLEND_CUBIC"
|
||||||
print 'renderer.setBlendMethod(BaseParticleRenderer.BaseParticleRenderer.' + bMethod + ')'
|
print 'renderer.setBlendMethod(BaseParticleRenderer.BaseParticleRenderer.' + bMethod + ')'
|
||||||
elif (self.rendererType == "Line"):
|
elif (self.rendererType == "LineParticleRenderer"):
|
||||||
print "# Line parameters"
|
print "# Line parameters"
|
||||||
sColor = self.renderer.getHeadColor()
|
sColor = self.renderer.getHeadColor()
|
||||||
print ('renderer.setHeadColor(Colorf(%f, %f, %f, %f))' % (sColor[0], sColor[1], sColor[2], sColor[3]))
|
print ('renderer.setHeadColor(Colorf(%f, %f, %f, %f))' % (sColor[0], sColor[1], sColor[2], sColor[3]))
|
||||||
sColor = self.renderer.getTailColor()
|
sColor = self.renderer.getTailColor()
|
||||||
print ('renderer.setTailColor(Colorf(%f, %f, %f, %f))' % (sColor[0], sColor[1], sColor[2], sColor[3]))
|
print ('renderer.setTailColor(Colorf(%f, %f, %f, %f))' % (sColor[0], sColor[1], sColor[2], sColor[3]))
|
||||||
elif (self.rendererType == "Geom"):
|
elif (self.rendererType == "GeomParticleRenderer"):
|
||||||
print "# Geom parameters"
|
print "# Geom parameters"
|
||||||
node = self.renderer.getGeomNode()
|
node = self.renderer.getGeomNode()
|
||||||
print 'renderer.setGeomNode(' + node.getName() + ')'
|
print 'renderer.setGeomNode(' + node.getName() + ')'
|
||||||
elif (self.rendererType == "Sparkle"):
|
elif (self.rendererType == "SparkleParticleRenderer"):
|
||||||
print "# Sparkle parameters"
|
print "# Sparkle parameters"
|
||||||
sColor = self.renderer.getCenterColor()
|
sColor = self.renderer.getCenterColor()
|
||||||
print ('renderer.setCenterColor(Colorf(%f, %f, %f, %f))' % (sColor[0], sColor[1], sColor[2], sColor[3]))
|
print ('renderer.setCenterColor(Colorf(%f, %f, %f, %f))' % (sColor[0], sColor[1], sColor[2], sColor[3]))
|
||||||
@ -253,7 +255,7 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||||||
if (lifeScale == SparkleParticleRenderer.SparkleParticleRenderer.SPSCALE):
|
if (lifeScale == SparkleParticleRenderer.SparkleParticleRenderer.SPSCALE):
|
||||||
lScale = "SP_SCALE"
|
lScale = "SP_SCALE"
|
||||||
print 'renderer.setLifeScale(SparkleParticleRenderer.SparkleParticleRenderer.' + lScale + ')'
|
print 'renderer.setLifeScale(SparkleParticleRenderer.SparkleParticleRenderer.' + lScale + ')'
|
||||||
elif (self.rendererType == "Sprite"):
|
elif (self.rendererType == "SpriteParticleRenderer"):
|
||||||
print "# Sprite parameters"
|
print "# Sprite parameters"
|
||||||
tex = self.renderer.getTexture()
|
tex = self.renderer.getTexture()
|
||||||
print 'renderer.setTexture(' + tex.getName() + ')'
|
print 'renderer.setTexture(' + tex.getName() + ')'
|
||||||
@ -296,13 +298,13 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||||||
print ('emitter.setExplicitLaunchVector(Vec3(%f, %f, %f))' % (oForce[0], oForce[1], oForce[2]))
|
print ('emitter.setExplicitLaunchVector(Vec3(%f, %f, %f))' % (oForce[0], oForce[1], oForce[2]))
|
||||||
orig = self.emitter.getRadiateOrigin()
|
orig = self.emitter.getRadiateOrigin()
|
||||||
print ('emitter.setRadiateOrigin(Point3(%f, %f, %f))' % (orig[0], orig[1], orig[2]))
|
print ('emitter.setRadiateOrigin(Point3(%f, %f, %f))' % (orig[0], orig[1], orig[2]))
|
||||||
if (self.emitterType == "Box"):
|
if (self.emitterType == "BoxEmitter"):
|
||||||
print "# Box parameters"
|
print "# Box parameters"
|
||||||
bound = self.emitter.getMinBound()
|
bound = self.emitter.getMinBound()
|
||||||
print ('emitter.setMinBound(Point3(%f, %f, %f))' % (bound[0], bound[1], bound[2]))
|
print ('emitter.setMinBound(Point3(%f, %f, %f))' % (bound[0], bound[1], bound[2]))
|
||||||
bound = self.emitter.getMaxBound()
|
bound = self.emitter.getMaxBound()
|
||||||
print ('emitter.setMaxBound(Point3(%f, %f, %f))' % (bound[0], bound[1], bound[2]))
|
print ('emitter.setMaxBound(Point3(%f, %f, %f))' % (bound[0], bound[1], bound[2]))
|
||||||
elif (self.emitterType == "Disc"):
|
elif (self.emitterType == "DiscEmitter"):
|
||||||
print "# Disc parameters"
|
print "# Disc parameters"
|
||||||
print 'emitter.setRadius(%f)' % self.emitter.getRadius()
|
print 'emitter.setRadius(%f)' % self.emitter.getRadius()
|
||||||
print 'emitter.setOuterAngle(%f)' % self.emitter.getOuterAngle()
|
print 'emitter.setOuterAngle(%f)' % self.emitter.getOuterAngle()
|
||||||
@ -311,32 +313,32 @@ class Particles(ParticleSystem.ParticleSystem):
|
|||||||
print 'emitter.setInnerMagnitude(%f)' % self.emitter.getInnerMagnitude()
|
print 'emitter.setInnerMagnitude(%f)' % self.emitter.getInnerMagnitude()
|
||||||
print 'emitter.setCubicLerping(%d)' % self.emitter.getCubicLerping()
|
print 'emitter.setCubicLerping(%d)' % self.emitter.getCubicLerping()
|
||||||
|
|
||||||
elif (self.emitterType == "Line"):
|
elif (self.emitterType == "LineEmitter"):
|
||||||
print "# Line parameters"
|
print "# Line parameters"
|
||||||
point = self.emitter.getEndpoint1()
|
point = self.emitter.getEndpoint1()
|
||||||
print ('emitter.setEndpoint1(Point3(%f, %f, %f))' % (point[0], point[1], point[2]))
|
print ('emitter.setEndpoint1(Point3(%f, %f, %f))' % (point[0], point[1], point[2]))
|
||||||
point = self.emitter.getEndpoint2()
|
point = self.emitter.getEndpoint2()
|
||||||
print ('emitter.setEndpoint2(Point3(%f, %f, %f))' % (point[0], point[1], point[2]))
|
print ('emitter.setEndpoint2(Point3(%f, %f, %f))' % (point[0], point[1], point[2]))
|
||||||
elif (self.emitterType == "Point"):
|
elif (self.emitterType == "PointEmitter"):
|
||||||
print "# Point parameters"
|
print "# Point parameters"
|
||||||
point = self.emitter.getLocation()
|
point = self.emitter.getLocation()
|
||||||
print ('emitter.setLocation(Point3(%f, %f, %f))' % (point[0], point[1], point[2]))
|
print ('emitter.setLocation(Point3(%f, %f, %f))' % (point[0], point[1], point[2]))
|
||||||
elif (self.emitterType == "Rectangle"):
|
elif (self.emitterType == "RectangleEmitter"):
|
||||||
print "# Rectangle parameters"
|
print "# Rectangle parameters"
|
||||||
bound = self.emitter.getMinBound()
|
bound = self.emitter.getMinBound()
|
||||||
print ('emitter.setMinBound(Point2(%f, %f))' % (point[0], point[1]))
|
print ('emitter.setMinBound(Point2(%f, %f))' % (point[0], point[1]))
|
||||||
bound = self.emitter.getMaxBound()
|
bound = self.emitter.getMaxBound()
|
||||||
print ('emitter.setMaxBound(Point2(%f, %f))' % (point[0], point[1]))
|
print ('emitter.setMaxBound(Point2(%f, %f))' % (point[0], point[1]))
|
||||||
elif (self.emitterType == "Ring"):
|
elif (self.emitterType == "RingEmitter"):
|
||||||
print "# Ring parameters"
|
print "# Ring parameters"
|
||||||
print 'emitter.setRadius(%f)' % self.emitter.getRadius()
|
print 'emitter.setRadius(%f)' % self.emitter.getRadius()
|
||||||
print 'emitter.setAngle(%f)' % self.emitter.getAngle()
|
print 'emitter.setAngle(%f)' % self.emitter.getAngle()
|
||||||
elif (self.emitterType == "Sphere Surface"):
|
elif (self.emitterType == "SphereSurfaceEmitter"):
|
||||||
print "# Sphere Surface parameters"
|
print "# Sphere Surface parameters"
|
||||||
print 'emitter.setRadius(%f)' % self.emitter.getRadius()
|
print 'emitter.setRadius(%f)' % self.emitter.getRadius()
|
||||||
elif (self.emitterType == "Sphere Volume"):
|
elif (self.emitterType == "SphereVolumeEmitter"):
|
||||||
print "# Sphere Volume parameters"
|
print "# Sphere Volume parameters"
|
||||||
print 'emitter.setRadius(%f)' % self.emitter.getRadius()
|
print 'emitter.setRadius(%f)' % self.emitter.getRadius()
|
||||||
elif (self.emitterType == "Tangent Ring"):
|
elif (self.emitterType == "TangentRingEmitter"):
|
||||||
print "# Tangent Ring parameters"
|
print "# Tangent Ring parameters"
|
||||||
print 'emitter.setRadius(%f)' % self.emitter.getRadius()
|
print 'emitter.setRadius(%f)' % self.emitter.getRadius()
|
||||||
|
@ -100,10 +100,10 @@ PT(GraphicsPipe) make_graphics_pipe() {
|
|||||||
GraphicsPipe::resolve_modules();
|
GraphicsPipe::resolve_modules();
|
||||||
|
|
||||||
nout << "Known pipe types:" << endl;
|
nout << "Known pipe types:" << endl;
|
||||||
GraphicsPipe::_factory.write_types(nout, 2);
|
GraphicsPipe::get_factory().write_types(nout, 2);
|
||||||
|
|
||||||
// Create a window
|
// Create a window
|
||||||
main_pipe = GraphicsPipe::_factory.
|
main_pipe = GraphicsPipe::get_factory().
|
||||||
make_instance(InteractiveGraphicsPipe::get_class_type());
|
make_instance(InteractiveGraphicsPipe::get_class_type());
|
||||||
|
|
||||||
if (main_pipe == (GraphicsPipe*)0L) {
|
if (main_pipe == (GraphicsPipe*)0L) {
|
||||||
|
@ -106,11 +106,12 @@ class ParticlePanel(AppShell):
|
|||||||
hpr.addMenuItem('Popup Placer Panel', Placer.Placer)
|
hpr.addMenuItem('Popup Placer Panel', Placer.Placer)
|
||||||
|
|
||||||
## FACTORY PAGE ##
|
## FACTORY PAGE ##
|
||||||
self.factorType = self.createOptionMenu(
|
self.factoryTypeMenu = self.createOptionMenu(
|
||||||
factoryPage,
|
factoryPage,
|
||||||
'Factory', 'Factory Type',
|
'Factory', 'Factory Type',
|
||||||
'Select type of particle factory',
|
'Select type of particle factory',
|
||||||
('Point', 'Z Spin', 'Oriented'),
|
('PointParticleFactory', 'ZSpinParticleFactory',
|
||||||
|
'OrientedParticleFactory'),
|
||||||
self.selectFactoryType)
|
self.selectFactoryType)
|
||||||
factoryWidgets = (
|
factoryWidgets = (
|
||||||
('Factory', 'Life Span',
|
('Factory', 'Life Span',
|
||||||
@ -141,9 +142,10 @@ class ParticlePanel(AppShell):
|
|||||||
|
|
||||||
self.factoryNotebook = Pmw.NoteBook(factoryPage, tabpos = None)
|
self.factoryNotebook = Pmw.NoteBook(factoryPage, tabpos = None)
|
||||||
# Point page #
|
# Point page #
|
||||||
factoryPointPage = self.factoryNotebook.add('Point')
|
factoryPointPage = self.factoryNotebook.add('PointParticleFactory')
|
||||||
|
Label(factoryPointPage, text = "").pack()
|
||||||
# Z spin page #
|
# Z spin page #
|
||||||
zSpinPage = self.factoryNotebook.add('Z Spin')
|
zSpinPage = self.factoryNotebook.add('ZSpinParticleFactory')
|
||||||
self.createAngleDial(zSpinPage, 'Z Spin Factory', 'Initial Angle',
|
self.createAngleDial(zSpinPage, 'Z Spin Factory', 'Initial Angle',
|
||||||
'Starting angle in degrees',
|
'Starting angle in degrees',
|
||||||
command = self.setFactoryZSpinInitialAngle)
|
command = self.setFactoryZSpinInitialAngle)
|
||||||
@ -154,23 +156,24 @@ class ParticlePanel(AppShell):
|
|||||||
'Spread of the final angle',
|
'Spread of the final angle',
|
||||||
command = self.setFactoryZSpinAngleSpread)
|
command = self.setFactoryZSpinAngleSpread)
|
||||||
# Oriented page #
|
# Oriented page #
|
||||||
orientedPage = self.factoryNotebook.add('Oriented')
|
orientedPage = self.factoryNotebook.add('OrientedParticleFactory')
|
||||||
Label(orientedPage, text = 'Not implemented').pack(expand = 1,
|
Label(orientedPage, text = 'Not implemented').pack(expand = 1,
|
||||||
fill = BOTH)
|
fill = BOTH)
|
||||||
self.factoryNotebook.pack(expand = 1, fill = BOTH)
|
#self.factoryNotebook.pack(expand = 1, fill = BOTH)
|
||||||
|
|
||||||
## EMITTER PAGE ##
|
## EMITTER PAGE ##
|
||||||
self.createOptionMenu(emitterPage, 'Emitter',
|
self.emitterTypeMenu = self.createOptionMenu(
|
||||||
'Emitter type',
|
emitterPage, 'Emitter',
|
||||||
'Select type of particle emitter',
|
'Emitter type',
|
||||||
('Box', 'Disc', 'Line', 'Point', 'Rectangle',
|
'Select type of particle emitter',
|
||||||
'Ring', 'Sphere Volume', 'Sphere Surface',
|
('BoxEmitter', 'DiscEmitter', 'LineEmitter', 'PointEmitter',
|
||||||
'Tangent Ring'),
|
'RectangleEmitter', 'RingEmitter', 'SphereVolumeEmitter',
|
||||||
self.selectEmitterType)
|
'SphereSurfaceEmitter', 'TangentRingEmitter'),
|
||||||
|
self.selectEmitterType)
|
||||||
|
|
||||||
self.emitterNotebook = Pmw.NoteBook(emitterPage, tabpos = None)
|
self.emitterNotebook = Pmw.NoteBook(emitterPage, tabpos = None)
|
||||||
# Box page #
|
# Box page #
|
||||||
boxPage = self.emitterNotebook.add('Box')
|
boxPage = self.emitterNotebook.add('BoxEmitter')
|
||||||
self.createVector3Entry(boxPage, 'Box Emitter', 'Min',
|
self.createVector3Entry(boxPage, 'Box Emitter', 'Min',
|
||||||
'Min point defining emitter box',
|
'Min point defining emitter box',
|
||||||
command = self.setEmitterBoxPoint1)
|
command = self.setEmitterBoxPoint1)
|
||||||
@ -182,7 +185,7 @@ class ParticlePanel(AppShell):
|
|||||||
'Initial particle velocity vector',
|
'Initial particle velocity vector',
|
||||||
command = self.setEmitterBoxVelocityVector)
|
command = self.setEmitterBoxVelocityVector)
|
||||||
# Disc page #
|
# Disc page #
|
||||||
discPage = self.emitterNotebook.add('Disc')
|
discPage = self.emitterNotebook.add('DiscEmitter')
|
||||||
self.createFloater(discPage, 'Disc Emitter', 'Radius',
|
self.createFloater(discPage, 'Disc Emitter', 'Radius',
|
||||||
'Radius of disc',
|
'Radius of disc',
|
||||||
command = self.setEmitterDiscRadius)
|
command = self.setEmitterDiscRadius)
|
||||||
@ -202,7 +205,7 @@ class ParticlePanel(AppShell):
|
|||||||
discPage, 'Disc Emitter', 'Cubic Lerping',
|
discPage, 'Disc Emitter', 'Cubic Lerping',
|
||||||
self.toggleEmitterDiscCubicLerping, 0)
|
self.toggleEmitterDiscCubicLerping, 0)
|
||||||
# Line page #
|
# Line page #
|
||||||
linePage = self.emitterNotebook.add('Line')
|
linePage = self.emitterNotebook.add('LineEmitter')
|
||||||
self.createVector3Entry(linePage, 'Line Emitter', 'Min',
|
self.createVector3Entry(linePage, 'Line Emitter', 'Min',
|
||||||
'Min point defining emitter line',
|
'Min point defining emitter line',
|
||||||
command = self.setEmitterLinePoint1)
|
command = self.setEmitterLinePoint1)
|
||||||
@ -215,7 +218,7 @@ class ParticlePanel(AppShell):
|
|||||||
command = self.setEmitterLineVelocityVector,
|
command = self.setEmitterLineVelocityVector,
|
||||||
initialValue = (0.0, 0.0, 1.0))
|
initialValue = (0.0, 0.0, 1.0))
|
||||||
# Point page #
|
# Point page #
|
||||||
emitterPointPage = self.emitterNotebook.add('Point')
|
emitterPointPage = self.emitterNotebook.add('PointEmitter')
|
||||||
self.createVector3Entry(emitterPointPage, 'Point Emitter', 'Position',
|
self.createVector3Entry(emitterPointPage, 'Point Emitter', 'Position',
|
||||||
'Position of emitter point',
|
'Position of emitter point',
|
||||||
command = self.setEmitterPointPosition)
|
command = self.setEmitterPointPosition)
|
||||||
@ -225,7 +228,7 @@ class ParticlePanel(AppShell):
|
|||||||
command = self.setEmitterPointVelocityVector,
|
command = self.setEmitterPointVelocityVector,
|
||||||
initialValue = (0.0, 0.0, 1.0))
|
initialValue = (0.0, 0.0, 1.0))
|
||||||
# Rectangle #
|
# Rectangle #
|
||||||
rectanglePage = self.emitterNotebook.add('Rectangle')
|
rectanglePage = self.emitterNotebook.add('RectangleEmitter')
|
||||||
self.createVector2Entry(rectanglePage,
|
self.createVector2Entry(rectanglePage,
|
||||||
'Rectangle Emitter', 'Min',
|
'Rectangle Emitter', 'Min',
|
||||||
'Point defining rectangle',
|
'Point defining rectangle',
|
||||||
@ -240,7 +243,7 @@ class ParticlePanel(AppShell):
|
|||||||
command = self.setEmitterRectangleVelocityVector,
|
command = self.setEmitterRectangleVelocityVector,
|
||||||
initialValue = (0.0, 0.0, 1.0))
|
initialValue = (0.0, 0.0, 1.0))
|
||||||
# Ring #
|
# Ring #
|
||||||
ringPage = self.emitterNotebook.add('Ring')
|
ringPage = self.emitterNotebook.add('RingEmitter')
|
||||||
self.createFloater(ringPage, 'Ring Emitter', 'Radius',
|
self.createFloater(ringPage, 'Ring Emitter', 'Radius',
|
||||||
'Radius of ring',
|
'Radius of ring',
|
||||||
command = self.setEmitterRingRadius)
|
command = self.setEmitterRingRadius)
|
||||||
@ -251,31 +254,34 @@ class ParticlePanel(AppShell):
|
|||||||
'Launch velocity multiplier at outer edge of ring',
|
'Launch velocity multiplier at outer edge of ring',
|
||||||
command = self.setEmitterRingVelocityMultiplier)
|
command = self.setEmitterRingVelocityMultiplier)
|
||||||
# Sphere volume #
|
# Sphere volume #
|
||||||
sphereVolumePage = self.emitterNotebook.add('Sphere Volume')
|
sphereVolumePage = self.emitterNotebook.add('SphereVolumeEmitter')
|
||||||
self.createFloater(sphereVolumePage, 'Sphere Volume Emitter', 'Radius',
|
self.createFloater(sphereVolumePage, 'Sphere Volume Emitter', 'Radius',
|
||||||
'Radius of sphere',
|
'Radius of sphere',
|
||||||
command = self.setEmitterSphereVolumeRadius)
|
command = self.setEmitterSphereVolumeRadius)
|
||||||
# Sphere surface #
|
# Sphere surface #
|
||||||
sphereSurfacePage = self.emitterNotebook.add('Sphere Surface')
|
sphereSurfacePage = self.emitterNotebook.add('SphereSurfaceEmitter')
|
||||||
self.createFloater(sphereSurfacePage, 'Sphere Surface Emitter',
|
self.createFloater(sphereSurfacePage, 'Sphere Surface Emitter',
|
||||||
'Radius',
|
'Radius',
|
||||||
'Radius of sphere',
|
'Radius of sphere',
|
||||||
command = self.setEmitterSphereSurfaceRadius)
|
command = self.setEmitterSphereSurfaceRadius)
|
||||||
# Tangent ring #
|
# Tangent ring #
|
||||||
tangentRingPage = self.emitterNotebook.add('Tangent Ring')
|
tangentRingPage = self.emitterNotebook.add('TangentRingEmitter')
|
||||||
self.createFloater(tangentRingPage, 'Tangent Ring Emitter', 'Radius',
|
self.createFloater(tangentRingPage, 'Tangent Ring Emitter', 'Radius',
|
||||||
'Radius of ring',
|
'Radius of ring',
|
||||||
command = self.setEmitterTangentRingRadius)
|
command = self.setEmitterTangentRingRadius)
|
||||||
self.emitterNotebook.pack(fill = X)
|
self.emitterNotebook.pack(fill = X)
|
||||||
|
|
||||||
## RENDERER PAGE ##
|
## RENDERER PAGE ##
|
||||||
self.createOptionMenu(rendererPage, 'Renderer', 'Renderer type',
|
self.rendererTypeMenu = self.createOptionMenu(
|
||||||
'Select type of particle renderer',
|
rendererPage, 'Renderer', 'Renderer type',
|
||||||
('Line', 'Geom', 'Point', 'Sparkle', 'Sprite'),
|
'Select type of particle renderer',
|
||||||
self.selectRendererType)
|
('LineParticleRenderer', 'GeomParticleRenderer',
|
||||||
|
'PointParticleRenderer', 'SparkleParticleRenderer',
|
||||||
|
'SpriteParticleRenderer'),
|
||||||
|
self.selectRendererType)
|
||||||
self.rendererNotebook = Pmw.NoteBook(rendererPage, tabpos = None)
|
self.rendererNotebook = Pmw.NoteBook(rendererPage, tabpos = None)
|
||||||
# Line page #
|
# Line page #
|
||||||
linePage = self.rendererNotebook.add('Line')
|
linePage = self.rendererNotebook.add('LineParticleRenderer')
|
||||||
self.createColorEntry(linePage, 'Line Renderer', 'Head Color',
|
self.createColorEntry(linePage, 'Line Renderer', 'Head Color',
|
||||||
'Head color of line',
|
'Head color of line',
|
||||||
command = self.setRendererLineHeadColor)
|
command = self.setRendererLineHeadColor)
|
||||||
@ -283,7 +289,7 @@ class ParticlePanel(AppShell):
|
|||||||
'Tail color of line',
|
'Tail color of line',
|
||||||
command = self.setRendererLineTailColor)
|
command = self.setRendererLineTailColor)
|
||||||
# Geom page #
|
# Geom page #
|
||||||
geomPage = self.rendererNotebook.add('Geom')
|
geomPage = self.rendererNotebook.add('GeomParticleRenderer')
|
||||||
f = Frame(geomPage)
|
f = Frame(geomPage)
|
||||||
f.pack(fill = X)
|
f.pack(fill = X)
|
||||||
Label(f, width = 12, text = 'Geom Node').pack(side = LEFT)
|
Label(f, width = 12, text = 'Geom Node').pack(side = LEFT)
|
||||||
@ -294,7 +300,7 @@ class ParticlePanel(AppShell):
|
|||||||
self.rendererGeomNodeEntry.bind('<Return>', self.setRendererGeomNode)
|
self.rendererGeomNodeEntry.bind('<Return>', self.setRendererGeomNode)
|
||||||
self.rendererGeomNodeEntry.pack(side = LEFT, expand = 1, fill = X)
|
self.rendererGeomNodeEntry.pack(side = LEFT, expand = 1, fill = X)
|
||||||
# Point #
|
# Point #
|
||||||
rendererPointPage = self.rendererNotebook.add('Point')
|
rendererPointPage = self.rendererNotebook.add('PointParticleRenderer')
|
||||||
self.createFloater(rendererPointPage, 'Point Renderer', 'Point Size',
|
self.createFloater(rendererPointPage, 'Point Renderer', 'Point Size',
|
||||||
'Width and height of points in pixels',
|
'Width and height of points in pixels',
|
||||||
command = self.setRendererPointSize)
|
command = self.setRendererPointSize)
|
||||||
@ -319,7 +325,7 @@ class ParticlePanel(AppShell):
|
|||||||
'PP_BLEND_CUBIC'),
|
'PP_BLEND_CUBIC'),
|
||||||
self.rendererPointSelectBlendMethod)
|
self.rendererPointSelectBlendMethod)
|
||||||
# Sparkle #
|
# Sparkle #
|
||||||
sparklePage = self.rendererNotebook.add('Sparkle')
|
sparklePage = self.rendererNotebook.add('SparkleParticleRenderer')
|
||||||
self.createColorEntry(sparklePage, 'Sparkle Renderer',
|
self.createColorEntry(sparklePage, 'Sparkle Renderer',
|
||||||
'Center Color',
|
'Center Color',
|
||||||
'Color of sparkle center',
|
'Color of sparkle center',
|
||||||
@ -342,7 +348,7 @@ class ParticlePanel(AppShell):
|
|||||||
('SP_NO_SCALE', 'SP_SCALE'),
|
('SP_NO_SCALE', 'SP_SCALE'),
|
||||||
self.setRendererSparkleLifeScale)
|
self.setRendererSparkleLifeScale)
|
||||||
# Sprite #
|
# Sprite #
|
||||||
spritePage = self.rendererNotebook.add('Sprite')
|
spritePage = self.rendererNotebook.add('SpriteParticleRenderer')
|
||||||
f = Frame(spritePage)
|
f = Frame(spritePage)
|
||||||
f.pack(fill = X)
|
f.pack(fill = X)
|
||||||
Label(f, width = 12, text = 'Texture').pack(side = LEFT)
|
Label(f, width = 12, text = 'Texture').pack(side = LEFT)
|
||||||
@ -506,10 +512,13 @@ class ParticlePanel(AppShell):
|
|||||||
if page == 'System':
|
if page == 'System':
|
||||||
self.updateSystemWidgets()
|
self.updateSystemWidgets()
|
||||||
elif page == 'Factory':
|
elif page == 'Factory':
|
||||||
|
self.selectFactoryPage()
|
||||||
self.updateFactoryWidgets()
|
self.updateFactoryWidgets()
|
||||||
elif page == 'Emitter':
|
elif page == 'Emitter':
|
||||||
|
self.selectEmitterPage()
|
||||||
self.updateEmitterWidgets()
|
self.updateEmitterWidgets()
|
||||||
elif page == 'Renderer':
|
elif page == 'Renderer':
|
||||||
|
self.selectRendererPage()
|
||||||
self.updateRendererWidgets()
|
self.updateRendererWidgets()
|
||||||
|
|
||||||
## SYSTEM PAGE ##
|
## SYSTEM PAGE ##
|
||||||
@ -554,6 +563,10 @@ class ParticlePanel(AppShell):
|
|||||||
self.factoryNotebook.selectpage(type)
|
self.factoryNotebook.selectpage(type)
|
||||||
self.particles.setFactory(type)
|
self.particles.setFactory(type)
|
||||||
self.updateFactoryWidgets()
|
self.updateFactoryWidgets()
|
||||||
|
|
||||||
|
def selectFactoryPage(self):
|
||||||
|
pass
|
||||||
|
|
||||||
def updateFactoryWidgets(self):
|
def updateFactoryWidgets(self):
|
||||||
factory = self.particles.factory
|
factory = self.particles.factory
|
||||||
lifespan = factory.getLifespanBase()
|
lifespan = factory.getLifespanBase()
|
||||||
@ -569,6 +582,7 @@ class ParticlePanel(AppShell):
|
|||||||
terminalVelocitySpread = factory.getTerminalVelocitySpread()
|
terminalVelocitySpread = factory.getTerminalVelocitySpread()
|
||||||
self.getWidget('Factory', 'Terminal Vel. Spread').set(
|
self.getWidget('Factory', 'Terminal Vel. Spread').set(
|
||||||
terminalVelocitySpread, 0)
|
terminalVelocitySpread, 0)
|
||||||
|
|
||||||
def setFactoryLifeSpan(self, value):
|
def setFactoryLifeSpan(self, value):
|
||||||
self.particles.factory.setLifespanBase(value)
|
self.particles.factory.setLifespanBase(value)
|
||||||
def setFactoryLifeSpanSpread(self, value):
|
def setFactoryLifeSpanSpread(self, value):
|
||||||
@ -595,6 +609,11 @@ class ParticlePanel(AppShell):
|
|||||||
self.emitterNotebook.selectpage(type)
|
self.emitterNotebook.selectpage(type)
|
||||||
self.particles.setEmitter(type)
|
self.particles.setEmitter(type)
|
||||||
self.updateEmitterWidgets()
|
self.updateEmitterWidgets()
|
||||||
|
|
||||||
|
def selectEmitterPage(self):
|
||||||
|
type = self.particles.emitter.__class__.__name__
|
||||||
|
self.emitterNotebook.selectpage(type)
|
||||||
|
self.emitterTypeMenu.set(type)
|
||||||
|
|
||||||
def updateEmitterWidgets(self):
|
def updateEmitterWidgets(self):
|
||||||
emitter = self.particles.emitter
|
emitter = self.particles.emitter
|
||||||
@ -722,6 +741,7 @@ class ParticlePanel(AppShell):
|
|||||||
self.rendererNotebook.selectpage(type)
|
self.rendererNotebook.selectpage(type)
|
||||||
self.particles.setRenderer(type)
|
self.particles.setRenderer(type)
|
||||||
self.updateRendererWidgets()
|
self.updateRendererWidgets()
|
||||||
|
|
||||||
def updateRendererWidgets(self):
|
def updateRendererWidgets(self):
|
||||||
renderer = self.particles.renderer
|
renderer = self.particles.renderer
|
||||||
if isinstance(renderer, LineParticleRenderer):
|
if isinstance(renderer, LineParticleRenderer):
|
||||||
@ -806,7 +826,12 @@ class ParticlePanel(AppShell):
|
|||||||
elif (blendMethod == BaseParticleRenderer.PPBLENDCUBIC):
|
elif (blendMethod == BaseParticleRenderer.PPBLENDCUBIC):
|
||||||
bMethod = "PP_BLEND_CUBIC"
|
bMethod = "PP_BLEND_CUBIC"
|
||||||
self.rendererSpriteAlphaDisable.set(renderer.getAlphaDisable())
|
self.rendererSpriteAlphaDisable.set(renderer.getAlphaDisable())
|
||||||
|
|
||||||
|
def selectRendererPage(self):
|
||||||
|
type = self.particles.renderer.__class__.__name__
|
||||||
|
self.rendererNotebook.selectpage(type)
|
||||||
|
self.rendererTypeMenu.set(type)
|
||||||
|
|
||||||
# Line #
|
# Line #
|
||||||
def setRendererLineHeadColor(self, color):
|
def setRendererLineHeadColor(self, color):
|
||||||
self.particles.renderer.setHeadColor(
|
self.particles.renderer.setHeadColor(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user