mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
*** empty log message ***
This commit is contained in:
parent
73e7c3131b
commit
34cd00fc6c
@ -73,6 +73,7 @@ class ParticlePanel(AppShell):
|
||||
factoryPage = self.mainNotebook.add('Factory')
|
||||
emitterPage = self.mainNotebook.add('Emitter')
|
||||
rendererPage = self.mainNotebook.add('Renderer')
|
||||
forcePage = self.mainNotebook.add('Force')
|
||||
# Put this here so it isn't called right away
|
||||
self.mainNotebook['raisecommand'] = self.updateInfo
|
||||
|
||||
@ -196,8 +197,8 @@ class ParticlePanel(AppShell):
|
||||
self.selectEmitterType)
|
||||
|
||||
# Emitter modes
|
||||
self.emissionType = StringVar()
|
||||
self.emissionType.set('ETCUSTOM')
|
||||
self.emissionType = IntVar()
|
||||
self.emissionType.set(BaseParticleEmitter.ETRADIATE)
|
||||
emissionFrame = Frame(emitterPage)
|
||||
self.createRadiobutton(
|
||||
emissionFrame, 'left',
|
||||
@ -263,22 +264,25 @@ class ParticlePanel(AppShell):
|
||||
'Radius of disc',
|
||||
command = self.setEmitterDiscRadius,
|
||||
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',
|
||||
command = self.setEmitterDiscInnerAngle)
|
||||
self.createFloater(discPage, 'Disc Emitter', 'Inner Velocity',
|
||||
self.createFloater(customPage, 'Disc Emitter', 'Inner Velocity',
|
||||
'Launch velocity multiplier at center of disc',
|
||||
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',
|
||||
command = self.setEmitterDiscOuterAngle)
|
||||
self.createFloater(discPage, 'Disc Emitter', 'Outer Velocity',
|
||||
self.createFloater(customPage, 'Disc Emitter', 'Outer Velocity',
|
||||
'Launch velocity multiplier at edge of disc',
|
||||
command = self.setEmitterDiscOuterVelocity)
|
||||
self.emitterDiscCubicLerping = self.createCheckbutton(
|
||||
discPage, 'Disc Emitter', 'Cubic Lerping',
|
||||
customPage, 'Disc Emitter', 'Cubic Lerping',
|
||||
'On: magnitude/angle interpolation from center',
|
||||
self.toggleEmitterDiscCubicLerping, 0)
|
||||
customPage.pack(fill = BOTH, expand = 1)
|
||||
|
||||
# Line page #
|
||||
linePage = self.emitterNotebook.add('LineEmitter')
|
||||
self.createVector3Entry(linePage, 'Line Emitter', 'Min',
|
||||
@ -309,9 +313,12 @@ class ParticlePanel(AppShell):
|
||||
'Radius of ring',
|
||||
command = self.setEmitterRingRadius,
|
||||
min = 0.01)
|
||||
self.createAngleDial(ringPage, 'Ring Emitter', 'Angle',
|
||||
self.ringCustomFrame = Frame(ringPage)
|
||||
self.createAngleDial(self.ringCustomFrame, 'Ring Emitter', 'Angle',
|
||||
'Particle launch angle',
|
||||
command = self.setEmitterRingLaunchAngle)
|
||||
self.ringCustomFrame.pack(fill = BOTH, expand = 1)
|
||||
|
||||
# Sphere volume #
|
||||
sphereVolumePage = self.emitterNotebook.add('SphereVolumeEmitter')
|
||||
self.createFloater(sphereVolumePage, 'Sphere Volume Emitter', 'Radius',
|
||||
@ -481,6 +488,14 @@ class ParticlePanel(AppShell):
|
||||
'On: alpha blending is disabled',
|
||||
self.toggleRendererSpriteAlphaDisable, 0)
|
||||
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.emitterNotebook.setnaturalsize()
|
||||
@ -743,7 +758,7 @@ class ParticlePanel(AppShell):
|
||||
|
||||
def updateEmitterWidgets(self):
|
||||
emitter = self.particles.emitter
|
||||
self.emissionType.set(self.particles.emitter.getEmissionType())
|
||||
self.setEmissionType(self.particles.emitter.getEmissionType())
|
||||
amp = emitter.getAmplitude()
|
||||
self.getWidget('Emitter', 'Velocity Multiplier').set(amp)
|
||||
spread = emitter.getAmplitudeSpread()
|
||||
@ -812,9 +827,43 @@ class ParticlePanel(AppShell):
|
||||
radius = emitter.getRadius()
|
||||
self.getWidget('Tangent Ring Emitter', 'Radius').set(radius, 0)
|
||||
# All #
|
||||
def setEmissionType(self):
|
||||
self.particles.emitter.setEmissionType(
|
||||
int(self.emissionType.get()))
|
||||
def setEmissionType(self, newType = None):
|
||||
if newType:
|
||||
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):
|
||||
self.particles.emitter.setAmplitude(value)
|
||||
|
@ -31,7 +31,8 @@ class VectorEntry(Pmw.MegaWidget):
|
||||
('min', None, self._updateValidate),
|
||||
('max', None, self._updateValidate),
|
||||
('significantDigits', 2, self._setSigDigits),
|
||||
('valuatorType', VALUATOR, None)
|
||||
('valuatorType', VALUATOR, None),
|
||||
('state', 'normal', self._setState),
|
||||
)
|
||||
self.defineoptions(kw, optiondefs)
|
||||
|
||||
@ -104,6 +105,9 @@ class VectorEntry(Pmw.MegaWidget):
|
||||
# Make sure entries are updated
|
||||
self.set(self['initialValue'])
|
||||
|
||||
# Record entry color
|
||||
self.entryBackground = self.cget('Entry_entry_background')
|
||||
|
||||
# Make sure input variables processed
|
||||
self.initialiseoptions(VectorEntry)
|
||||
|
||||
@ -222,6 +226,32 @@ class VectorEntry(Pmw.MegaWidget):
|
||||
self._floaters.set(self.get()[:])
|
||||
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):
|
||||
def __init__(self, parent = None, **kw):
|
||||
# Initialize options for the class
|
||||
|
Loading…
x
Reference in New Issue
Block a user