|
|
@@ -23,7 +23,7 @@ __all__ = ['enumerate', 'unique', 'indent', 'nonRepeatingRandomList',
|
|
|
'_equal', '_notEqual', '_isNone', '_notNone', '_contains', '_notIn',
|
|
|
'ScratchPad', 'Sync', 'RefCounter', 'itype', 'getNumberedTypedString',
|
|
|
'printNumberedTyped', 'DelayedCall', 'DelayedFunctor',
|
|
|
-'FrameDelayedCallback', 'ArgumentEater', 'ClassTree', 'getBase',
|
|
|
+'FrameDelayedCall', 'ArgumentEater', 'ClassTree', 'getBase',
|
|
|
'superFlattenShip','HotkeyBreaker','logMethodCalls','GoldenRatio',
|
|
|
'GoldenRectangle', 'pivotScalar', 'rad90', 'rad180', 'rad270', 'rad360']
|
|
|
|
|
|
@@ -2360,35 +2360,13 @@ class DelayedCall:
|
|
|
del self._func
|
|
|
func()
|
|
|
|
|
|
-class DelayedFunctor:
|
|
|
- """ Waits for this object to be called, then calls supplied functor after a delay.
|
|
|
- Effectively inserts a time delay between the caller and the functor. """
|
|
|
- def __init__(self, functor, name=None, delay=None):
|
|
|
- self._functor = functor
|
|
|
- self._name = name
|
|
|
- # FunctionInterval requires __name__
|
|
|
- self.__name__ = self._name
|
|
|
- self._delay = delay
|
|
|
- def _callFunctor(self):
|
|
|
- cb = Functor(self._functor, *self._args, **self._kwArgs)
|
|
|
- del self._functor
|
|
|
- del self._name
|
|
|
- del self._delay
|
|
|
- del self._args
|
|
|
- del self._kwArgs
|
|
|
- del self._delayedCall
|
|
|
- del self.__name__
|
|
|
- cb()
|
|
|
- def __call__(self, *args, **kwArgs):
|
|
|
- self._args = args
|
|
|
- self._kwArgs = kwArgs
|
|
|
- self._delayedCall = DelayedCall(self._callFunctor, self._name, self._delay)
|
|
|
-
|
|
|
-class FrameDelayedCallback:
|
|
|
- """ waits N frames and then calls a callback """
|
|
|
- def __init__(self, name, frames, callback, cancelFunc=None):
|
|
|
+class FrameDelayedCall:
|
|
|
+ """ calls a func after N frames """
|
|
|
+ def __init__(self, name, callback, frames=None, cancelFunc=None):
|
|
|
# checkFunc is optional; called every frame, if returns True, FrameDelay is cancelled
|
|
|
# and callback is not called
|
|
|
+ if frames is None:
|
|
|
+ frames = 1
|
|
|
self._name = name
|
|
|
self._frames = frames
|
|
|
self._callback = callback
|
|
|
@@ -2406,7 +2384,7 @@ class FrameDelayedCallback:
|
|
|
def _stopTask(self):
|
|
|
taskMgr.remove(self._taskName)
|
|
|
def _frameTask(self, task):
|
|
|
- if self._cancelFunc():
|
|
|
+ if self._cancelFunc and self._cancelFunc():
|
|
|
self.destroy()
|
|
|
return task.done
|
|
|
self._counter += 1
|
|
|
@@ -2415,6 +2393,30 @@ class FrameDelayedCallback:
|
|
|
return task.done
|
|
|
return task.cont
|
|
|
|
|
|
+class DelayedFunctor:
|
|
|
+ """ Waits for this object to be called, then calls supplied functor after a delay.
|
|
|
+ Effectively inserts a time delay between the caller and the functor. """
|
|
|
+ def __init__(self, functor, name=None, delay=None):
|
|
|
+ self._functor = functor
|
|
|
+ self._name = name
|
|
|
+ # FunctionInterval requires __name__
|
|
|
+ self.__name__ = self._name
|
|
|
+ self._delay = delay
|
|
|
+ def _callFunctor(self):
|
|
|
+ cb = Functor(self._functor, *self._args, **self._kwArgs)
|
|
|
+ del self._functor
|
|
|
+ del self._name
|
|
|
+ del self._delay
|
|
|
+ del self._args
|
|
|
+ del self._kwArgs
|
|
|
+ del self._delayedCall
|
|
|
+ del self.__name__
|
|
|
+ cb()
|
|
|
+ def __call__(self, *args, **kwArgs):
|
|
|
+ self._args = args
|
|
|
+ self._kwArgs = kwArgs
|
|
|
+ self._delayedCall = DelayedCall(self._callFunctor, self._name, self._delay)
|
|
|
+
|
|
|
class ArgumentEater:
|
|
|
def __init__(self, numToEat, func):
|
|
|
self._numToEat = numToEat
|
|
|
@@ -2737,6 +2739,6 @@ __builtin__.printStack = printStack
|
|
|
__builtin__.printVerboseStack = printVerboseStack
|
|
|
__builtin__.DelayedCall = DelayedCall
|
|
|
__builtin__.DelayedFunctor = DelayedFunctor
|
|
|
-__builtin__.FrameDelayedCallback = FrameDelayedCallback
|
|
|
+__builtin__.FrameDelayedCall = FrameDelayedCall
|
|
|
__builtin__.ArgumentEater = ArgumentEater
|
|
|
__builtin__.ClassTree = ClassTree
|