2015-06-23 18:11:48 -05:00
|
|
|
from panda3d.core import *
|
2015-03-03 16:10:12 -06:00
|
|
|
from direct.showbase.DirectObject import DirectObject
|
|
|
|
from direct.interval.IntervalGlobal import *
|
|
|
|
from toontown.battle.BattleProps import *
|
|
|
|
from toontown.battle import MovieUtil
|
|
|
|
|
|
|
|
class EffectManager(DirectObject):
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
self.effectList = []
|
|
|
|
|
|
|
|
def delete(self):
|
|
|
|
for effect in effectList:
|
|
|
|
self.__removeEffect(effect)
|
|
|
|
|
|
|
|
def addSplatEffect(self, spawner, splatName = 'splat-creampie', time = 1, size = 6, parent = render):
|
|
|
|
splat = globalPropPool.getProp(splatName)
|
|
|
|
splatSeq = Sequence()
|
|
|
|
splatType = globalPropPool.getPropType(splatName)
|
|
|
|
splatShow = Func(self.__showProp, splat, size, parent, spawner.getPos(parent))
|
|
|
|
splatAnim = ActorInterval(splat, splatName)
|
|
|
|
splatHide = Func(MovieUtil.removeProp, splat)
|
|
|
|
splatRemove = Func(self.__removeEffect, splatSeq)
|
|
|
|
splatSeq.append(splatShow)
|
|
|
|
splatSeq.append(splatAnim)
|
|
|
|
splatSeq.append(splatHide)
|
|
|
|
splatSeq.append(splatRemove)
|
|
|
|
splatSeq.start()
|
|
|
|
self.effectList.append(splatSeq)
|
|
|
|
|
|
|
|
def __showProp(self, prop, size, parent, pos):
|
|
|
|
prop.reparentTo(parent)
|
|
|
|
prop.setScale(size)
|
|
|
|
prop.setBillboardPointEye()
|
|
|
|
prop.setPos(pos + Vec3(0, 0, size / 2))
|
|
|
|
|
|
|
|
def __removeEffect(self, effect):
|
|
|
|
if effect.isPlaying():
|
|
|
|
effect.finish()
|
|
|
|
self.effectList.remove(effect)
|
|
|
|
effect = None
|
|
|
|
return
|