toontown-just-works/toontown/effects/Ripples.py

46 lines
1.4 KiB
Python
Raw Normal View History

2024-07-07 18:08:39 -05:00
from panda3d.core import *
from direct.interval.IntervalGlobal import *
from toontown.battle.BattleProps import globalPropPool
class Ripples(NodePath):
rippleCount = 0
def __init__(self, parent = hidden):
NodePath.__init__(self)
self.assign(globalPropPool.getProp('ripples'))
self.reparentTo(parent)
self.getChild(0).setZ(0.1)
self.seqNode = self.find('**/+SequenceNode').node()
self.seqNode.setPlayRate(0)
self.track = None
self.trackId = Ripples.rippleCount
Ripples.rippleCount += 1
self.setBin('fixed', 100, 1)
self.hide()
return
def createTrack(self, rate = 1):
tflipDuration = self.seqNode.getNumChildren() / (float(rate) * 24)
self.track = Sequence(Func(self.show), Func(self.seqNode.play, 0, self.seqNode.getNumFrames() - 1), Func(self.seqNode.setPlayRate, rate), Wait(tflipDuration), Func(self.seqNode.setPlayRate, 0), Func(self.hide), name='ripples-track-%d' % self.trackId)
def play(self, rate = 1):
self.stop()
self.createTrack(rate)
self.track.start()
def loop(self, rate = 1):
self.stop()
self.createTrack(rate)
self.track.loop()
def stop(self):
if self.track:
self.track.finish()
def destroy(self):
self.stop()
self.track = None
del self.seqNode
self.removeNode()
return