mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-05 11:28:17 -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')
|
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',
|
||||||
@ -482,6 +489,14 @@ class ParticlePanel(AppShell):
|
|||||||
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()
|
||||||
self.rendererNotebook.setnaturalsize()
|
self.rendererNotebook.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)
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user