mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-17 12:12:10 -04:00
first pass at a particle interval
This commit is contained in:
parent
2425624c9d
commit
f0bafc3d7a
103
direct/src/interval/TestInterval.py
Executable file
103
direct/src/interval/TestInterval.py
Executable file
@ -0,0 +1,103 @@
|
||||
"""
|
||||
Contains the ParticleInterval class
|
||||
"""
|
||||
|
||||
from pandac.PandaModules import *
|
||||
from direct.directnotify.DirectNotifyGlobal import directNotify
|
||||
from Interval import Interval
|
||||
|
||||
from direct.particles import ParticleEffect
|
||||
|
||||
class TestInterval(Interval):
|
||||
# Name counter
|
||||
particleNum = 1
|
||||
# create ParticleInterval DirectNotify category
|
||||
notify = directNotify.newCategory('TestInterval')
|
||||
# Class methods
|
||||
def __init__(self,
|
||||
particleEffect,
|
||||
duration=0.0,
|
||||
parent = None,
|
||||
renderParent = None,
|
||||
name=None):
|
||||
"""
|
||||
particleEffect is ??
|
||||
parent is ??
|
||||
worldRelative is a boolean
|
||||
loop is a boolean
|
||||
duration is a float for the time
|
||||
name is ??
|
||||
"""
|
||||
# Generate unique name
|
||||
id = 'Particle-%d' % TestInterval.particleNum
|
||||
TestInterval.particleNum += 1
|
||||
if name == None:
|
||||
name = id
|
||||
# Record instance variables
|
||||
self.particleEffect = particleEffect
|
||||
self.parent = parent
|
||||
self.renderParent = renderParent
|
||||
|
||||
Interval.__init__(self, name, duration)
|
||||
|
||||
def __del__(self):
|
||||
pass
|
||||
|
||||
def __step(self,dt):
|
||||
self.particleEffect.accelerate(dt,1,0.05)
|
||||
|
||||
def start(self,*args,**kwargs):
|
||||
self.particleEffect.clearToInitial()
|
||||
self.currT = 0
|
||||
Interval.start(self,*args,**kwargs)
|
||||
|
||||
def privInitialize(self, t):
|
||||
if self.parent != None:
|
||||
self.particleEffect.reparentTo(self.parent)
|
||||
if self.renderParent != None:
|
||||
self.setRenderParent(self.renderParent.node())
|
||||
|
||||
self.state = CInterval.SStarted
|
||||
#self.particleEffect.enable()
|
||||
"""
|
||||
if (self.particleEffect.renderParent != None):
|
||||
for p in self.particleEffect.particlesDict.values():
|
||||
p.setRenderParent(self.particleEffect.renderParent.node())
|
||||
"""
|
||||
for f in self.particleEffect.forceGroupDict.values():
|
||||
f.enable()
|
||||
"""
|
||||
for p in self.particleEffect.particlesDict.values():
|
||||
p.enable()
|
||||
self.particleEffect.fEnabled = 1
|
||||
"""
|
||||
self.__step(t-self.currT)
|
||||
self.currT = t
|
||||
|
||||
def privStep(self, t):
|
||||
if self.state == CInterval.SPaused:
|
||||
# Restarting from a pause.
|
||||
self.privInitialize(t)
|
||||
else:
|
||||
self.state = CInterval.SStarted
|
||||
self.__step(t-self.currT)
|
||||
self.currT = t
|
||||
|
||||
def privFinalize(self):
|
||||
self.__step(self.getDuration()-self.currT)
|
||||
self.currT = self.getDuration()
|
||||
|
||||
self.state = CInterval.SFinal
|
||||
|
||||
def privInstant(self):
|
||||
"""
|
||||
Full jump from Initial state to Final State
|
||||
"""
|
||||
self.__step(self.getDuration()-self.currT)
|
||||
self.currT = self.getDuration()
|
||||
|
||||
self.state = CInterval.SFinal
|
||||
|
||||
def privInterrupt(self):
|
||||
if not self.isStopped():
|
||||
self.state = CInterval.SPaused
|
Loading…
x
Reference in New Issue
Block a user