*** empty log message ***

This commit is contained in:
Mark Mine 2001-01-26 07:29:15 +00:00
parent 73e7c3131b
commit 34cd00fc6c
2 changed files with 92 additions and 13 deletions

View File

@ -73,6 +73,7 @@ class ParticlePanel(AppShell):
factoryPage = self.mainNotebook.add('Factory') factoryPage = self.mainNotebook.add('Factory')
emitterPage = self.mainNotebook.add('Emitter') emitterPage = self.mainNotebook.add('Emitter')
rendererPage = self.mainNotebook.add('Renderer') rendererPage = self.mainNotebook.add('Renderer')
forcePage = self.mainNotebook.add('Force')
# Put this here so it isn't called right away # Put this here so it isn't called right away
self.mainNotebook['raisecommand'] = self.updateInfo self.mainNotebook['raisecommand'] = self.updateInfo
@ -196,8 +197,8 @@ class ParticlePanel(AppShell):
self.selectEmitterType) self.selectEmitterType)
# Emitter modes # Emitter modes
self.emissionType = StringVar() self.emissionType = IntVar()
self.emissionType.set('ETCUSTOM') self.emissionType.set(BaseParticleEmitter.ETRADIATE)
emissionFrame = Frame(emitterPage) emissionFrame = Frame(emitterPage)
self.createRadiobutton( self.createRadiobutton(
emissionFrame, 'left', emissionFrame, 'left',
@ -263,22 +264,25 @@ class ParticlePanel(AppShell):
'Radius of disc', 'Radius of disc',
command = self.setEmitterDiscRadius, command = self.setEmitterDiscRadius,
min = 0.01) min = 0.01)
self.createAngleDial(discPage, 'Disc Emitter', 'Inner Angle', customPage = self.discCustomFrame = Frame(discPage)
self.createAngleDial(customPage, 'Disc Emitter', 'Inner Angle',
'Particle launch angle at center of disc', 'Particle launch angle at center of disc',
command = self.setEmitterDiscInnerAngle) command = self.setEmitterDiscInnerAngle)
self.createFloater(discPage, 'Disc Emitter', 'Inner Velocity', self.createFloater(customPage, 'Disc Emitter', 'Inner Velocity',
'Launch velocity multiplier at center of disc', 'Launch velocity multiplier at center of disc',
command = self.setEmitterDiscInnerVelocity) command = self.setEmitterDiscInnerVelocity)
self.createAngleDial(discPage, 'Disc Emitter', 'Outer Angle', self.createAngleDial(customPage, 'Disc Emitter', 'Outer Angle',
'Particle launch angle at outer edge of disc', 'Particle launch angle at outer edge of disc',
command = self.setEmitterDiscOuterAngle) command = self.setEmitterDiscOuterAngle)
self.createFloater(discPage, 'Disc Emitter', 'Outer Velocity', self.createFloater(customPage, 'Disc Emitter', 'Outer Velocity',
'Launch velocity multiplier at edge of disc', 'Launch velocity multiplier at edge of disc',
command = self.setEmitterDiscOuterVelocity) command = self.setEmitterDiscOuterVelocity)
self.emitterDiscCubicLerping = self.createCheckbutton( self.emitterDiscCubicLerping = self.createCheckbutton(
discPage, 'Disc Emitter', 'Cubic Lerping', customPage, 'Disc Emitter', 'Cubic Lerping',
'On: magnitude/angle interpolation from center', 'On: magnitude/angle interpolation from center',
self.toggleEmitterDiscCubicLerping, 0) self.toggleEmitterDiscCubicLerping, 0)
customPage.pack(fill = BOTH, expand = 1)
# Line page # # Line page #
linePage = self.emitterNotebook.add('LineEmitter') linePage = self.emitterNotebook.add('LineEmitter')
self.createVector3Entry(linePage, 'Line Emitter', 'Min', self.createVector3Entry(linePage, 'Line Emitter', 'Min',
@ -309,9 +313,12 @@ class ParticlePanel(AppShell):
'Radius of ring', 'Radius of ring',
command = self.setEmitterRingRadius, command = self.setEmitterRingRadius,
min = 0.01) min = 0.01)
self.createAngleDial(ringPage, 'Ring Emitter', 'Angle', self.ringCustomFrame = Frame(ringPage)
self.createAngleDial(self.ringCustomFrame, 'Ring Emitter', 'Angle',
'Particle launch angle', 'Particle launch angle',
command = self.setEmitterRingLaunchAngle) command = self.setEmitterRingLaunchAngle)
self.ringCustomFrame.pack(fill = BOTH, expand = 1)
# Sphere volume # # Sphere volume #
sphereVolumePage = self.emitterNotebook.add('SphereVolumeEmitter') sphereVolumePage = self.emitterNotebook.add('SphereVolumeEmitter')
self.createFloater(sphereVolumePage, 'Sphere Volume Emitter', 'Radius', self.createFloater(sphereVolumePage, 'Sphere Volume Emitter', 'Radius',
@ -481,6 +488,14 @@ class ParticlePanel(AppShell):
'On: alpha blending is disabled', 'On: alpha blending is disabled',
self.toggleRendererSpriteAlphaDisable, 0) self.toggleRendererSpriteAlphaDisable, 0)
self.rendererNotebook.pack(fill = X) self.rendererNotebook.pack(fill = X)
## FORCE PAGE ##
# fn = ForceNode()
# lvf = LinearVectorForce()
# lvf.setVector(0,0,-4)
# fn.addForce(lvf)
# physicsMgr.addLinearForce(lvf)
# render.attachNewNode(fn)
self.factoryNotebook.setnaturalsize() self.factoryNotebook.setnaturalsize()
self.emitterNotebook.setnaturalsize() self.emitterNotebook.setnaturalsize()
@ -743,7 +758,7 @@ class ParticlePanel(AppShell):
def updateEmitterWidgets(self): def updateEmitterWidgets(self):
emitter = self.particles.emitter emitter = self.particles.emitter
self.emissionType.set(self.particles.emitter.getEmissionType()) self.setEmissionType(self.particles.emitter.getEmissionType())
amp = emitter.getAmplitude() amp = emitter.getAmplitude()
self.getWidget('Emitter', 'Velocity Multiplier').set(amp) self.getWidget('Emitter', 'Velocity Multiplier').set(amp)
spread = emitter.getAmplitudeSpread() spread = emitter.getAmplitudeSpread()
@ -812,9 +827,43 @@ class ParticlePanel(AppShell):
radius = emitter.getRadius() radius = emitter.getRadius()
self.getWidget('Tangent Ring Emitter', 'Radius').set(radius, 0) self.getWidget('Tangent Ring Emitter', 'Radius').set(radius, 0)
# All # # All #
def setEmissionType(self): def setEmissionType(self, newType = None):
self.particles.emitter.setEmissionType( if newType:
int(self.emissionType.get())) type = newType
self.emissionType.set(type)
else:
type = self.emissionType.get()
self.particles.emitter.setEmissionType(type)
if type == BaseParticleEmitter.ETEXPLICIT:
self.getWidget(
'Emitter', 'Radiate Origin')['state'] = 'disabled'
self.getWidget(
'Emitter', 'Explicit Velocity')['state'] = 'normal'
# Hide custom widgets
if isinstance(self.particles.emitter, DiscEmitter):
self.discCustomFrame.pack_forget()
elif isinstance(self.particles.emitter, RingEmitter):
self.ringCustomFrame.pack_forget()
elif type == BaseParticleEmitter.ETRADIATE:
self.getWidget(
'Emitter', 'Radiate Origin')['state'] = 'normal'
self.getWidget(
'Emitter', 'Explicit Velocity')['state'] = 'disabled'
# Hide custom widgets
if isinstance(self.particles.emitter, DiscEmitter):
self.discCustomFrame.pack_forget()
elif isinstance(self.particles.emitter, RingEmitter):
self.ringCustomFrame.pack_forget()
elif type == BaseParticleEmitter.ETCUSTOM:
self.getWidget(
'Emitter', 'Radiate Origin')['state'] = 'disabled'
self.getWidget(
'Emitter', 'Explicit Velocity')['state'] = 'disabled'
# Show custom widgets
if isinstance(self.particles.emitter, DiscEmitter):
self.discCustomFrame.pack(fill = BOTH, expand = 1)
elif isinstance(self.particles.emitter, RingEmitter):
self.ringCustomFrame.pack(fill = BOTH, expand = 1)
def setEmitterAmplitude(self, value): def setEmitterAmplitude(self, value):
self.particles.emitter.setAmplitude(value) self.particles.emitter.setAmplitude(value)

View File

@ -31,7 +31,8 @@ class VectorEntry(Pmw.MegaWidget):
('min', None, self._updateValidate), ('min', None, self._updateValidate),
('max', None, self._updateValidate), ('max', None, self._updateValidate),
('significantDigits', 2, self._setSigDigits), ('significantDigits', 2, self._setSigDigits),
('valuatorType', VALUATOR, None) ('valuatorType', VALUATOR, None),
('state', 'normal', self._setState),
) )
self.defineoptions(kw, optiondefs) self.defineoptions(kw, optiondefs)
@ -104,6 +105,9 @@ class VectorEntry(Pmw.MegaWidget):
# Make sure entries are updated # Make sure entries are updated
self.set(self['initialValue']) self.set(self['initialValue'])
# Record entry color
self.entryBackground = self.cget('Entry_entry_background')
# Make sure input variables processed # Make sure input variables processed
self.initialiseoptions(VectorEntry) self.initialiseoptions(VectorEntry)
@ -222,6 +226,32 @@ class VectorEntry(Pmw.MegaWidget):
self._floaters.set(self.get()[:]) self._floaters.set(self.get()[:])
self._floaters.show() self._floaters.show()
def _setState(self):
if self['state'] == 'disabled':
# Disable entry
self.configure(Entry_entry_state = 'disabled')
self.configure(Entry_entry_background = '#C0C0C0')
# Disable floater Group scale
self.component('fGroup').configure(
Valuator_scale_state = 'disabled')
# Disable floater group entry
self.component('fGroup').configure(
Valuator_entry_state = 'disabled')
self.component('fGroup').configure(
Valuator_entry_background = '#C0C0C0')
else:
# Disable entry
self.configure(Entry_entry_state = 'normal')
self.configure(Entry_entry_background = self.entryBackground)
# Disable floater Group scale
self.component('fGroup').configure(
Valuator_scale_state = 'normal')
# Disable floater group entry
self.component('fGroup').configure(
Valuator_entry_state = 'normal')
self.component('fGroup').configure(
Valuator_entry_background = self.entryBackground)
class Vector2Entry(VectorEntry): class Vector2Entry(VectorEntry):
def __init__(self, parent = None, **kw): def __init__(self, parent = None, **kw):
# Initialize options for the class # Initialize options for the class