oldschool-toontown/toontown/effects/PooledEffect.py
Little Cat 1801d2b9fb
all: replace pandac.PandaModules imports.
UD/AI + Client boots up.
2022-12-16 20:40:57 -04:00

40 lines
1 KiB
Python

from panda3d.core import *
from direct.showbase import Pool
from direct.showbase.DirectObject import DirectObject
import re
class PooledEffect(DirectObject, NodePath):
pool = None
poolLimit = 124
@classmethod
def getEffect(cls, context = ''):
if cls.pool is None:
cls.pool = Pool.Pool()
if cls.pool.hasFree():
return cls.pool.checkout()
else:
free, used = cls.pool.getNumItems()
if free + used < cls.poolLimit:
cls.pool.add(cls())
return cls.pool.checkout()
else:
return
return
@classmethod
def cleanup(cls):
if cls.pool:
cls.pool.cleanup(cls.destroy)
cls.pool = None
return
def __init__(self):
NodePath.__init__(self, self.__class__.__name__)
self.accept('clientLogout', self.__class__.cleanup)
def destroy(self, item = None):
if item:
self.pool.remove(item)
self.ignore('clientLogout')
self.removeNode()