31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
from direct.distributed.DistributedObject import ESGenerating, ESGenerated, ESNum2Str
|
|
|
|
class DelayDeletable:
|
|
DelayDeleteSerialGen = SerialNumGen()
|
|
|
|
def delayDelete(self):
|
|
pass
|
|
|
|
def acquireDelayDelete(self, name):
|
|
global ESGenerating
|
|
global ESGenerated
|
|
if not self._delayDeleteForceAllow and self.activeState not in (ESGenerating, ESGenerated):
|
|
self.notify.error('cannot acquire DelayDelete "%s" on %s because it is in state %s' % (name, self.__class__.__name__, ESNum2Str[self.activeState]))
|
|
if self.getDelayDeleteCount() == 0:
|
|
self.cr._addDelayDeletedDO(self)
|
|
token = next(DelayDeletable.DelayDeleteSerialGen)
|
|
self._token2delayDeleteName[token] = name
|
|
return token
|
|
|
|
def releaseDelayDelete(self, token):
|
|
name = self._token2delayDeleteName.pop(token)
|
|
if len(self._token2delayDeleteName) == 0:
|
|
self.cr._removeDelayDeletedDO(self)
|
|
if self._delayDeleted:
|
|
self.disableAnnounceAndDelete()
|
|
|
|
def getDelayDeleteNames(self):
|
|
return list(self._token2delayDeleteName.values())
|
|
|
|
def forceAllowDelayDelete(self):
|
|
self._delayDeleteForceAllow = True
|