oldschool-toontown/toontown/effects/EffectController.py

108 lines
2.6 KiB
Python
Raw Normal View History

from panda3d.core import *
2019-11-02 17:27:54 -05:00
class EffectController:
particleDummy = None
def __init__(self):
self.track = None
self.startEffect = None
self.endEffect = None
self.f = None
self.p0 = None
return
def createTrack(self):
pass
def destroy(self):
self.finish()
if self.f:
self.f.cleanup()
self.f = None
self.p0 = None
self.removeNode()
return
def cleanUpEffect(self):
if self.f:
self.setPosHpr(0, 0, 0, 0, 0, 0)
self.f.disable()
self.detachNode()
def reallyCleanUpEffect(self):
self.cleanUpEffect()
self.finish()
def play(self, lod = None):
if lod != None:
try:
self.createTrack(lod)
except TypeError as e:
2019-11-02 17:27:54 -05:00
raise TypeError('Error loading %s effect.' % self.__class__.__name__)
else:
self.createTrack()
self.track.start()
return
def stop(self):
if self.track:
self.track.pause()
self.track = None
if self.startEffect:
self.startEffect.pause()
self.startEffect = None
if self.endEffect:
self.endEffect.pause()
self.endEffect = None
self.cleanUpEffect()
return
def finish(self):
if self.track:
self.track.pause()
self.track = None
if self.startEffect:
self.startEffect.pause()
self.startEffect = None
if self.endEffect:
self.endEffect.pause()
self.endEffect = None
return
def startLoop(self, lod = None):
if lod != None:
try:
self.createTrack(lod)
except TypeError as e:
2019-11-02 17:27:54 -05:00
raise TypeError('Error loading %s effect.' % self.__class__.__name__)
else:
self.createTrack()
if self.startEffect:
self.startEffect.start()
return
def stopLoop(self):
if self.startEffect:
self.startEffect.pause()
self.startEffect = None
if self.endEffect and not self.endEffect.isPlaying():
self.endEffect.start()
return
def getTrack(self):
if not self.track:
self.createTrack()
return self.track
def enableEffect(self):
if self.f and self.particleDummy:
self.f.start(self, self.particleDummy)
elif self.f:
self.f.start(self, self)
def disableEffect(self):
if self.f:
self.f.disable()