from panda3d.core import * 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